{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":10445,"databundleVersionId":200747,"sourceType":"competition"},{"sourceId":8834080,"sourceType":"datasetVersion","datasetId":5305385}],"dockerImageVersionId":30732,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport numpy as np","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-07-02T05:45:02.778198Z","iopub.execute_input":"2024-07-02T05:45:02.778659Z","iopub.status.idle":"2024-07-02T05:45:03.944304Z","shell.execute_reply.started":"2024-07-02T05:45:02.778624Z","shell.execute_reply":"2024-07-02T05:45:03.943002Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data = pd.read_csv(\"/kaggle/input/elo-merchant-category-recommendation-train-test/test_data.csv\")\ntrain_data = pd.read_csv(\"/kaggle/input/elo-merchant-category-recommendation-train-test/train_data.csv\")","metadata":{"execution":{"iopub.status.busy":"2024-07-02T05:45:03.946584Z","iopub.execute_input":"2024-07-02T05:45:03.947204Z","iopub.status.idle":"2024-07-02T05:45:29.167080Z","shell.execute_reply.started":"2024-07-02T05:45:03.947159Z","shell.execute_reply":"2024-07-02T05:45:29.165781Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data = test_data.fillna(0)\ntrain_data = train_data.fillna(0)","metadata":{"execution":{"iopub.status.busy":"2024-07-01T18:42:16.967977Z","iopub.execute_input":"2024-07-01T18:42:16.968328Z","iopub.status.idle":"2024-07-01T18:42:17.313427Z","shell.execute_reply.started":"2024-07-01T18:42:16.968293Z","shell.execute_reply":"2024-07-01T18:42:17.311887Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"feature = test_data.columns[test_data.columns!=\"card_id\"]\n\ncorrs = []\nfor fea in feature:\n    corr = abs(train_data[[fea,\"target\"]].corr()).values[0][1]\n    corrs.append(corr)\n\nselection_std = pd.Series(corrs,index = feature).sort_values(ascending=False)\nfeature = selection_std[:300].index.tolist()\n# for i in feature:\n#     print(i)","metadata":{"execution":{"iopub.status.busy":"2024-07-01T18:42:17.315669Z","iopub.execute_input":"2024-07-01T18:42:17.316008Z","iopub.status.idle":"2024-07-01T18:42:18.820862Z","shell.execute_reply.started":"2024-07-01T18:42:17.315979Z","shell.execute_reply":"2024-07-01T18:42:18.819722Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.metrics import mean_squared_error\nfrom sklearn.ensemble import RandomForestRegressor as RF\nfrom sklearn.model_selection import GridSearchCV,RandomizedSearchCV\nfrom sklearn.model_selection import KFold","metadata":{"execution":{"iopub.status.busy":"2024-07-01T18:42:18.822020Z","iopub.execute_input":"2024-07-01T18:42:18.822327Z","iopub.status.idle":"2024-07-01T18:42:19.673438Z","shell.execute_reply.started":"2024-07-01T18:42:18.822299Z","shell.execute_reply":"2024-07-01T18:42:19.672370Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# param_dist = {  \n#     'n_estimators': range(10,200,10),  \n# #     'max_features': range(60,81,5),\n# #     'max_depth': range(22,27,2),  \n# #     'min_samples_split': range(13,16),  \n# #     'min_samples_leaf': range(7,10), \n# }  \n# clf = RF(\n#     random_state = 2024,\n#     n_estimators = 130,\n#     min_samples_split = 14,\n#     min_samples_leaf = 8,\n#     max_features = 70,\n#     max_depth = 24\n#  )\nclf = RF(\n    random_state = 22,\n    n_estimators = 100,\n    min_samples_split = 2,\n    min_samples_leaf = 31,\n    max_features = 81,\n    max_depth = 10,\n    n_jobs=-1\n )","metadata":{"execution":{"iopub.status.busy":"2024-07-01T18:42:19.674764Z","iopub.execute_input":"2024-07-01T18:42:19.675200Z","iopub.status.idle":"2024-07-01T18:42:19.681404Z","shell.execute_reply.started":"2024-07-01T18:42:19.675164Z","shell.execute_reply":"2024-07-01T18:42:19.680238Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# print(\"start GridSearch\")\n# grid_search = GridSearchCV(  \n#     clf,  \n#     param_dist,     \n#     n_jobs=-1,  # 使用所有可用的核心  \n#     cv=5,   \n# )  \n# grid_search.fit(train_data[feature].values,train_data[\"target\"].values)\n# print(\"Best parameters found by GridSearch:\")  \n# print(grid_search.best_params_) \n# best_est =  grid_search.best_estimator_\nbest_est = clf","metadata":{"execution":{"iopub.status.busy":"2024-07-01T18:42:19.682895Z","iopub.execute_input":"2024-07-01T18:42:19.683438Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"k = 5  \nkf = KFold(n_splits=k, shuffle=True, random_state=42)  \n  \n\nres = pd.DataFrame()\nres['card_id'] = test_data['card_id']\nres['target'] = 0\n\nscores = []\ntrain_pred = pd.DataFrame()\n\n# 进行k折交叉验证  \nfor train_index, val_index in kf.split(train_data):  \n    train, val= train_data.loc[train_index], train_data.loc[val_index]\n    best_est.fit(train[feature].values,train[\"target\"].values) \n    \n    val_pred = pd.Series(best_est.predict(val[feature].values),index=train_data[\"card_id\"].loc[val_index])\n    train_pred = pd.concat((train_pred,val_pred),axis=0)\n    \n    res['target'] += best_est.predict(test_data[feature])\n      \n    # 计算并保存这一折的MSE  \n    mse = mean_squared_error(val_pred.values,val[\"target\"].values)  \n    scores.append(mse)  \n    print(f\"第{len(scores)}折mse: {mse}\")\n\nres['target'] /= k\ntrain_pred.columns=[\"target\"]\n# 计算并打印k折交叉验证的平均MSE  \nprint(\"Average MSE across {} folds: {}\".format(k, np.mean(scores)))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"res.to_csv(\"/kaggle/working/submission.csv\",index=False)\ntrain_pred.to_csv(\"/kaggle/working/rf_train_pred.csv\")","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}