{"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":"markdown","source":"# ■Make submission_file","metadata":{}},{"cell_type":"code","source":"def mapping(x):\n    session_id = int(x.split(\"_\")[0])\n    quest_num = x.split(\"_\")[1]\n    \n    rating = df[df[\"session_id\"]==session_id][quest_num].iloc[-1]\n    return rating","metadata":{"tags":[],"execution":{"iopub.status.busy":"2023-04-17T14:14:07.679101Z","iopub.execute_input":"2023-04-17T14:14:07.679651Z","iopub.status.idle":"2023-04-17T14:14:07.69129Z","shell.execute_reply.started":"2023-04-17T14:14:07.679616Z","shell.execute_reply":"2023-04-17T14:14:07.690098Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import xgboost as xgb\nimport jo_wilder\nenv = jo_wilder.make_env()\niter_test = env.iter_test()\n\nfor (test, sample_submission) in iter_test:\n    test = lag_data(test)\n    test = calc_diff(test)\n    test = add_event_details(test)\n\n    test_grouping_1 = grouping_df_1(test)\n\n    test_agg_mean = agg_df_level_group(test_grouping_1,\"mean\")\n    test_agg_max = agg_df_level_group(test_grouping_1,\"max\")\n    test_agg_min = agg_df_level_group(test_grouping_1,\"min\")\n    test_agg = test_agg_mean.merge(test_agg_max,on=[\"session_id\",\"level_group\"],how=\"left\")\n    test_agg = test_agg.merge(test_agg_min,on=[\"session_id\",\"level_group\"],how=\"left\")\n    \n    sample_submission_0_4 = pd.DataFrame()\n    sample_submission_5_12 = pd.DataFrame()\n    sample_submission_13_22 = pd.DataFrame()\n\n    if test_agg[\"level_group\"].values[0] == \"0-4\":\n        test_0_4 = test_agg[test_agg[\"level_group\"]==\"0-4\"].drop(\"level_group\",axis=1).set_index(\"session_id\")\n        D_test = xgb.DMatrix(test_0_4)\n        # level_group:0-4の予測\n        for k,model in models_0_4.items():\n            y_pred_test = model.predict(D_test,ntree_limit=model.best_ntree_limit)\n            y_pred_test = np.where(y_pred_test > 0.5, 1, 0)  \n            test_0_4[k] = y_pred_test\n        \n        df = test_0_4.copy().reset_index()\n\n        sample_submission[\"quest_num\"] = sample_submission[\"session_id\"].apply(lambda x:int((x.split(\"_\")[1]).replace(\"q\",\"\")))\n        sample_submission_0_4 = sample_submission[sample_submission[\"quest_num\"]<4]\n        sample_submission_0_4[\"correct\"] = sample_submission_0_4[\"session_id\"].apply(mapping)\n\n    if test_agg[\"level_group\"].values[0] == \"5-12\":\n        test_5_12 = test_agg[test_agg[\"level_group\"]==\"5-12\"].drop(\"level_group\",axis=1).set_index(\"session_id\")\n        D_test = xgb.DMatrix(test_5_12)\n        # level_group:5-12の予測\n        for k,model in models_5_12.items():\n            y_pred_test = model.predict(D_test,ntree_limit=model.best_ntree_limit)\n            y_pred_test = np.where(y_pred_test > 0.5, 1, 0) \n            test_5_12[k] = y_pred_test\n\n        df = test_5_12.copy().reset_index()\n        sample_submission[\"quest_num\"] = sample_submission[\"session_id\"].apply(lambda x:int((x.split(\"_\")[1]).replace(\"q\",\"\")))\n        sample_submission_5_12 = sample_submission[(sample_submission[\"quest_num\"]>=4)&(sample_submission[\"quest_num\"]<14)]\n        sample_submission_5_12[\"correct\"] = sample_submission_5_12[\"session_id\"].apply(mapping)\n\n    if test_agg[\"level_group\"].values[0] == \"13-22\":\n        test_13_22 = test_agg[test_agg[\"level_group\"]==\"13-22\"].drop(\"level_group\",axis=1).set_index(\"session_id\")\n        D_test = xgb.DMatrix(test_13_22)\n        # level_group:13-22の予測\n        for k,model in models_13_22.items():\n            y_pred_test = model.predict(D_test,ntree_limit=model.best_ntree_limit)\n            y_pred_test = np.where(y_pred_test > 0.5, 1, 0)  \n            test_13_22[k] = y_pred_test\n\n        df = test_13_22.copy().reset_index()\n        sample_submission[\"quest_num\"] = sample_submission[\"session_id\"].apply(lambda x:int((x.split(\"_\")[1]).replace(\"q\",\"\")))\n        sample_submission_13_22 = sample_submission[sample_submission[\"quest_num\"]>=14]\n        sample_submission_13_22[\"correct\"] = sample_submission_13_22[\"session_id\"].apply(mapping)\n\n    sample_submission = pd.concat([sample_submission_0_4,sample_submission_5_12],axis=0).reset_index()\n    sample_submission = pd.concat([sample_submission,sample_submission_13_22],axis=0).reset_index()  \n    sample_submission[\"correct\"] = sample_submission[\"correct\"].astype(int)\n    sample_submission = sample_submission[[\"session_id\", \"correct\"]]\n\n    env.predict(sample_submission)","metadata":{"execution":{"iopub.status.busy":"2023-04-17T14:14:07.692696Z","iopub.execute_input":"2023-04-17T14:14:07.693284Z","iopub.status.idle":"2023-04-17T14:14:08.385592Z","shell.execute_reply.started":"2023-04-17T14:14:07.693248Z","shell.execute_reply":"2023-04-17T14:14:08.384526Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}