{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nfrom scipy import sparse\nfrom sklearn.preprocessing import OneHotEncoder, OrdinalEncoder, MinMaxScaler\nfrom sklearn.model_selection import train_test_split, GridSearchCV\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.metrics import roc_auc_score\nimport xgboost as xgb\n\npath = '/kaggle/input/cat-in-the-dat/'\n\ntrain = pd.read_csv(path + 'train.csv', index_col='id')\ntest = pd.read_csv(path + 'test.csv', index_col='id')\nsubmission = pd.read_csv(path + 'sample_submission.csv', index_col='id')\n\nall_data = pd.concat([train, test])\nall_data = all_data.drop('target', axis=1)\nall_data['bin_3'] = all_data['bin_3'].map({'F': 0, 'T': 1})\nall_data['bin_4'] = all_data['bin_4'].map({'N': 0, 'Y': 1})\nall_data['ord_1'] = all_data['ord_1'].map(\n    {'Novice': 0, 'Contributor': 1, 'Expert': 2, 'Master': 3, 'Grandmaster': 4})\nall_data['ord_2'] = all_data['ord_2'].map(\n    {'Freezing': 0, 'Cold': 1, 'Warm': 2, 'Hot': 3, 'Boiling Hot': 4, 'Lava Hot': 5})\n\nord_345 = ['ord_3', 'ord_4', 'ord_5']\nord_encoder = OrdinalEncoder()\nall_data[ord_345] = ord_encoder.fit_transform(all_data[ord_345])\n\nonehot_encoder = OneHotEncoder()\nnom_features = ['nom_' + str(i) for i in range(10)]\nencoded_nom_matrix = onehot_encoder.fit_transform(all_data[nom_features])\n\nall_data = all_data.drop(nom_features, axis=1)\n\ndate_features = ['day', 'month']\nencoded_date_matrix = onehot_encoder.fit_transform(all_data[date_features])\nall_data = all_data.drop(date_features, axis=1)\n\nord_features = ['ord_' + str(i) for i in range(6)]\nall_data[ord_features] = MinMaxScaler().fit_transform(all_data[ord_features])\n\nall_data_sprs = sparse.hstack([sparse.csr_matrix(\n    all_data), encoded_nom_matrix, encoded_date_matrix], format='csr')\n\nnum_train = len(train)\n\nx_train = all_data_sprs[:num_train]\nx_test = all_data_sprs[num_train:]\n\ny = train['target']\n\n# x_train, x_valid, y_train, y_valid = train_test_split(\n#     x_train, y, test_size=0.1, stratify=y, random_state=10)\n\n# training\n# logistic_model = LogisticRegression()\nmodel = xgb.XGBClassifier()\n\n# lr_params = {'C': [0.125], 'max_iter': [800], 'solver': ['liblinear'], 'random_state': [42]}\nparameters = {'random_state': [42], 'n_estimators': [370], 'max_depth': [4], 'learning_rate': [0.1]}\n\ngridsearch_xgb_model = GridSearchCV(\n    estimator=model, param_grid=parameters, scoring='roc_auc', cv=5)\n\n# gridsearch_logistic_model.fit(x_train, y)\ngridsearch_xgb_model.fit(x_train, y)\nprint('최적 하이퍼파라미터:', gridsearch_xgb_model.best_params_)\n\n# y_valid_preds = gridsearch_xgb_model.predict_proba(x_valid)[:, 1]\n# roc_auc = roc_auc_score(y_valid, y_valid_preds)\n# print(f'검증 데이터 ROC AUC: {roc_auc:.4f}')\n\ny_preds = gridsearch_xgb_model.predict_proba(x_test)[:, 1]\n\nsubmission['target'] = y_preds\nsubmission.to_csv('submission.csv')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-07-28T15:21:53.912922Z","iopub.execute_input":"2022-07-28T15:21:53.913229Z"},"trusted":true},"execution_count":null,"outputs":[]}]}