{"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":"#Importing the dataset\n\nimport pandas as pd\nimport numpy as np\nfrom tqdm import tqdm\n\n#Importing details about sequences, hints and explanations\nsequence_details=pd.read_csv('/kaggle/input/edm-cup-2023/sequence_details.csv')\nhint_details=pd.read_csv('/kaggle/input/edm-cup-2023/hint_details.csv')\nexplanation_details=pd.read_csv('/kaggle/input/edm-cup-2023/explanation_details.csv')\n\n'''\nImporting training, validation and test datasets.\n'''\ntrain= pd.read_csv('/kaggle/input/edm-preprocessed/train_data_V5.csv')\nval= pd.read_csv('/kaggle/input/edm-preprocessed/test_data_V5.csv')\ntest=pd.read_csv('/kaggle/input/edm-preprocessed/evaluation_V5.csv')\n\n#Importing training and test sets\n\ntraining_unit_test_scores=pd.read_csv('/kaggle/input/edm-cup-2023/training_unit_test_scores.csv')\nevaluation_unit_test_scores=pd.read_csv('/kaggle/input/edm-cup-2023/evaluation_unit_test_scores.csv')\n\n#Importing the click-stream data along with information regarding assignments and problems.\naction_logs=pd.read_csv('/kaggle/input/edm-cup-2023/action_logs.csv')\nassignment_details=pd.read_csv('/kaggle/input/edm-cup-2023/assignment_details.csv')\nassignment_relationships=pd.read_csv('/kaggle/input/edm-cup-2023/assignment_relationships.csv')\nsequence_relationships=pd.read_csv('/kaggle/input/edm-cup-2023/sequence_relationships.csv')\nproblem_details=pd.read_csv('/kaggle/input/edm-cup-2023/problem_details.csv')","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:05:57.313241Z","iopub.status.busy":"2023-06-15T07:05:57.312878Z","iopub.status.idle":"2023-06-15T07:07:54.024225Z","shell.execute_reply":"2023-06-15T07:07:54.022968Z","shell.execute_reply.started":"2023-06-15T07:05:57.313212Z"},"id":"k0shcs6Hxg9E"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Adding problem information and the unit assignment id to the action logs\naction_logs=action_logs.merge(assignment_relationships, left_on='assignment_log_id', right_on='in_unit_assignment_log_id', how='left')\naction_logs=action_logs.merge(assignment_details[['student_id','assignment_log_id', 'teacher_id','class_id']], on='assignment_log_id',how='left')\naction_logs=action_logs.merge(problem_details, on='problem_id', how='left')","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:07:54.027598Z","iopub.status.busy":"2023-06-15T07:07:54.027130Z","iopub.status.idle":"2023-06-15T07:09:29.632399Z","shell.execute_reply":"2023-06-15T07:09:29.630549Z","shell.execute_reply.started":"2023-06-15T07:07:54.027554Z"},"id":"4QPqou3Vxg9F"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Extracting categorical sequence-level features\ntemp=sequence_details.merge(assignment_details, on='sequence_id', how='left')\ntemp=temp[['assignment_log_id','sequence_folder_path_level_2','sequence_folder_path_level_3','sequence_folder_path_level_1',\n           'sequence_folder_path_level_4']].dropna()\n#Adding sequence-level information to the action logs\naction_logs = action_logs.merge(temp, on='assignment_log_id',how='left')","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:09:29.636015Z","iopub.status.busy":"2023-06-15T07:09:29.634732Z","iopub.status.idle":"2023-06-15T07:10:51.423147Z","shell.execute_reply":"2023-06-15T07:10:51.422210Z","shell.execute_reply.started":"2023-06-15T07:09:29.635973Z"},"id":"GE2jodVRxg9G"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Adding sequence-level features to the data\ntrain=train.merge(temp,on='assignment_log_id',how='left')\nval=val.merge(temp,on='assignment_log_id',how='left')\ntest=test.merge(temp,on='assignment_log_id',how='left')","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:10:51.426115Z","iopub.status.busy":"2023-06-15T07:10:51.425577Z","iopub.status.idle":"2023-06-15T07:11:44.092475Z","shell.execute_reply":"2023-06-15T07:11:44.090655Z","shell.execute_reply.started":"2023-06-15T07:10:51.426082Z"},"id":"ijr8jL6Wxg9G"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Extracting Assignment-level action counts features\nunit_assign_features = action_logs.groupby(['student_id','unit_test_assignment_log_id',\n                                           'action']).size().unstack(fill_value=0).reset_index()\nunit_assign_features = unit_assign_features.loc[:,unit_assign_features.columns !='student_id']\nunit_assign_features.columns = [unit_assign_features.columns[0]] + [x + \"_unit\" for x in unit_assign_features.columns[1:]]","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:11:44.094916Z","iopub.status.busy":"2023-06-15T07:11:44.094463Z","iopub.status.idle":"2023-06-15T07:11:54.590241Z","shell.execute_reply":"2023-06-15T07:11:54.588300Z","shell.execute_reply.started":"2023-06-15T07:11:44.094881Z"},"id":"uC-26j-Kxg9G"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Adding Assignment-level action counts features to the data\ntrain=train.merge(unit_assign_features,on='unit_test_assignment_log_id',how='left')\nval=val.merge(unit_assign_features,on='unit_test_assignment_log_id',how='left')\ntest=test.merge(unit_assign_features,on='unit_test_assignment_log_id',how='left')","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:11:54.592436Z","iopub.status.busy":"2023-06-15T07:11:54.592044Z","iopub.status.idle":"2023-06-15T07:11:55.306949Z","shell.execute_reply":"2023-06-15T07:11:55.305665Z","shell.execute_reply.started":"2023-06-15T07:11:54.592404Z"},"id":"Pj4rC4nhxg9G"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Extracting Student-level action counts features\nall_assign_features = action_logs.groupby(['student_id',\n                                           'action']).size().unstack(fill_value=0).reset_index()\nall_assign_features.columns = [all_assign_features.columns[0]] + [x + \"_total\" for x in all_assign_features.columns[1:]]","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:11:55.309825Z","iopub.status.busy":"2023-06-15T07:11:55.309442Z","iopub.status.idle":"2023-06-15T07:12:02.431312Z","shell.execute_reply":"2023-06-15T07:12:02.430360Z","shell.execute_reply.started":"2023-06-15T07:11:55.309793Z"},"id":"siriK4Xixg9H"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Adding Student-level action counts features to the data\ntrain=train.merge(all_assign_features,on='student_id',how='left')\nval=val.merge(all_assign_features,on='student_id',how='left')\ntest=test.merge(all_assign_features,on='student_id',how='left')","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:12:02.433789Z","iopub.status.busy":"2023-06-15T07:12:02.432638Z","iopub.status.idle":"2023-06-15T07:12:03.111891Z","shell.execute_reply":"2023-06-15T07:12:03.110756Z","shell.execute_reply.started":"2023-06-15T07:12:02.433726Z"},"id":"LOLLchZCxg9H"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Specifiying the name of actions to be considered\ncol_action_names = ['answer_requested', 'assignment_finished',\n       'assignment_resumed', 'assignment_started', 'continue_selected',\n       'correct_response', 'explanation_requested', 'hint_requested',\n       'live_tutor_requested', 'open_response', 'problem_finished',\n       'problem_started', 'skill_related_video_requested', 'wrong_response',\n                    'response_rate','finish_rate']","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:12:03.113830Z","iopub.status.busy":"2023-06-15T07:12:03.113456Z","iopub.status.idle":"2023-06-15T07:12:03.119402Z","shell.execute_reply":"2023-06-15T07:12:03.118459Z","shell.execute_reply.started":"2023-06-15T07:12:03.113797Z"},"id":"6dIkVck-xg9H"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Extracting In-unit average action counts features\nin_unit_assign_features = action_logs.groupby(['student_id','unit_test_assignment_log_id',\n                                               'in_unit_assignment_log_id',\n                                           'action']).size().unstack(fill_value=0).reset_index()\nin_unit_assign_features['response_rate'] = in_unit_assign_features['correct_response']/in_unit_assign_features['problem_started']\nin_unit_assign_features['finish_rate'] = in_unit_assign_features['problem_finished']/(in_unit_assign_features['problem_started'])\n\nin_unit_assign_features = in_unit_assign_features.groupby(['student_id',\n                                                           'unit_test_assignment_log_id']\n                                                         )[col_action_names].mean().reset_index()\nin_unit_assign_features = in_unit_assign_features.loc[:,in_unit_assign_features.columns !='student_id']\nin_unit_assign_features.columns = [in_unit_assign_features.columns[0]] + [x + \"_avgin\" for x in in_unit_assign_features.columns[1:]]","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:12:03.123554Z","iopub.status.busy":"2023-06-15T07:12:03.122556Z","iopub.status.idle":"2023-06-15T07:12:24.092017Z","shell.execute_reply":"2023-06-15T07:12:24.090656Z","shell.execute_reply.started":"2023-06-15T07:12:03.123481Z"},"id":"MhoP64pAxg9I"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Adding In-unit average action counts features to the data\ntrain=train.merge(in_unit_assign_features,on='unit_test_assignment_log_id',how='left')\nval=val.merge(in_unit_assign_features,on='unit_test_assignment_log_id',how='left')\ntest=test.merge(in_unit_assign_features,on='unit_test_assignment_log_id',how='left')","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:12:24.094059Z","iopub.status.busy":"2023-06-15T07:12:24.093646Z","iopub.status.idle":"2023-06-15T07:12:24.799691Z","shell.execute_reply":"2023-06-15T07:12:24.798423Z","shell.execute_reply.started":"2023-06-15T07:12:24.094024Z"},"id":"PmnVgsRQxg9I"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Extracting Problem-level average action counts features\nproblem_actions = action_logs.groupby(['problem_id',\n                                           'action']).size().unstack(fill_value=0).reset_index()\n\nproblem_actions['response_rate'] = problem_actions['correct_response']/problem_actions['problem_started']\nproblem_actions['finish_rate'] = problem_actions['problem_finished']/(problem_actions['problem_started'])\n\nproblem_actions.columns = [problem_actions.columns[0]] + [x + \"_problem\" for x in problem_actions.columns[1:]]\nprob_cols = [\n    'answer_requested_problem', 'correct_response_problem',\n       'problem_finished_problem', 'problem_started_problem',\n       'wrong_response_problem', 'open_response_problem',\n       'hint_requested_problem', 'explanation_requested_problem',\n       'skill_related_video_requested_problem',\n       'live_tutor_requested_problem', 'response_rate_problem',\n    'finish_rate_problem']\nfal_tmp = action_logs.groupby(['student_id',\n             'unit_test_assignment_log_id',\n             'in_unit_assignment_log_id', 'problem_id']).size().reset_index()\nfal_tmp = fal_tmp.merge(problem_actions, on='problem_id', how='left')\nfal_tmp = fal_tmp.loc[:,fal_tmp.columns != 0]\nfal_tmp = fal_tmp.groupby(['student_id',\n             'unit_test_assignment_log_id',\n             'in_unit_assignment_log_id']).mean(numeric_only=True).reset_index()\nfal_tmp = fal_tmp.groupby(['student_id',\n             'unit_test_assignment_log_id']).mean(numeric_only=True).reset_index()\nfal_tmp = fal_tmp.loc[:,fal_tmp.columns !='student_id']","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:12:24.801696Z","iopub.status.busy":"2023-06-15T07:12:24.801213Z","iopub.status.idle":"2023-06-15T07:13:05.357392Z","shell.execute_reply":"2023-06-15T07:13:05.355996Z","shell.execute_reply.started":"2023-06-15T07:12:24.801649Z"},"id":"WWoDw6Qbxg9I"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Adding Problem-level average action counts features to the data\ntrain=train.merge(fal_tmp,on='unit_test_assignment_log_id',how='left')\nval=val.merge(fal_tmp,on='unit_test_assignment_log_id',how='left')\ntest=test.merge(fal_tmp,on='unit_test_assignment_log_id',how='left')","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:13:05.359949Z","iopub.status.busy":"2023-06-15T07:13:05.358965Z","iopub.status.idle":"2023-06-15T07:13:06.123131Z","shell.execute_reply":"2023-06-15T07:13:06.121738Z","shell.execute_reply.started":"2023-06-15T07:13:05.359911Z"},"id":"tHEM775Mxg9I"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def divide_default(x,y,default=0):\n    \"\"\"Dividing with a default value as output when\n    when the denominator is zero.\n    \"\"\"\n    if (y == 0):\n        return default\n    else: return x/y","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:13:06.125595Z","iopub.status.busy":"2023-06-15T07:13:06.124895Z","iopub.status.idle":"2023-06-15T07:13:06.132041Z","shell.execute_reply":"2023-06-15T07:13:06.130740Z","shell.execute_reply.started":"2023-06-15T07:13:06.125556Z"},"id":"s07mXLZmxg9J"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Extracting Problem-weighted in-unit average features\nfaal = action_logs.groupby(['student_id',\n             'unit_test_assignment_log_id',\n             'in_unit_assignment_log_id', 'problem_id',\n                    'action']).size().unstack(fill_value=0).reset_index()\nfaal = faal.merge(problem_actions,on='problem_id',how='left')\ncolumn_list = ['correct_response',\n       'problem_finished', 'problem_started', 'wrong_response',\n       'open_response', 'answer_requested', 'hint_requested',\n       'explanation_requested', 'skill_related_video_requested',\n       'live_tutor_requested']\nfor c in tqdm(column_list):\n    faal[f'weighted_{c}'] = faal[f'{c}_problem'].apply(lambda x: divide_default(1,x,0)) * faal[c]\nfaal = faal[['student_id',\n             'unit_test_assignment_log_id',\n             'in_unit_assignment_log_id', 'problem_id'] + [f'weighted_{c}' for c in column_list]]\nfaal= faal.groupby(['student_id',\n             'unit_test_assignment_log_id',\n             'in_unit_assignment_log_id']).mean(numeric_only=True).reset_index()\nfaal= faal.groupby(['unit_test_assignment_log_id']).mean(numeric_only=True).reset_index()\nfaal = faal.loc[:,faal.columns !='student_id']","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:14:18.946882Z","iopub.status.busy":"2023-06-15T07:14:18.946466Z","iopub.status.idle":"2023-06-15T07:15:53.649268Z","shell.execute_reply":"2023-06-15T07:15:53.647882Z","shell.execute_reply.started":"2023-06-15T07:14:18.946848Z"},"id":"u_jf5Ipvxg9J","outputId":"9adc724b-e0bf-4c38-c9dc-d4f5186492d4"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Adding Problem-weighted in-unit average features to the data\ntrain=train.merge(faal,on='unit_test_assignment_log_id',how='left')\nval=val.merge(faal,on='unit_test_assignment_log_id',how='left')\ntest=test.merge(faal,on='unit_test_assignment_log_id',how='left')","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:15:53.652147Z","iopub.status.busy":"2023-06-15T07:15:53.651067Z","iopub.status.idle":"2023-06-15T07:15:54.528412Z","shell.execute_reply":"2023-06-15T07:15:54.526355Z","shell.execute_reply.started":"2023-06-15T07:15:53.652089Z"},"id":"2eXDktFmxg9J"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Extracting Problem-level performance features\npaal = action_logs.groupby(['student_id',\n             'unit_test_assignment_log_id',\n             'in_unit_assignment_log_id', 'problem_id',\n                    'action']).size().unstack(fill_value=0).reset_index()\npaal = paal.merge(problem_actions,on='problem_id',how='left')\n\nwrong = paal['wrong_response']\ncorrect = paal['correct_response']\nhint = paal['hint_requested']\nexplain = paal['explanation_requested']\nanswer = paal['answer_requested']\n\np_wrong = paal['wrong_response_problem']\np_correct = paal['correct_response_problem']\np_hint = paal['hint_requested_problem']\np_explain = paal['explanation_requested_problem']\np_answer = paal['answer_requested_problem']\n\npaal['performance_evaluation'] = (p_wrong.apply(lambda x: divide_default(-1,x)) * wrong\n                                + p_correct.apply(lambda x: divide_default(1,x)) * correct)\n\npaal = paal[['student_id',\n             'unit_test_assignment_log_id',\n             'in_unit_assignment_log_id', 'problem_id'] + ['performance_evaluation']]\npaal= paal.groupby(['student_id',\n             'unit_test_assignment_log_id',\n             'in_unit_assignment_log_id']).sum(numeric_only =True).reset_index()\npaal = paal.loc[:,paal.columns !='student_id']\npaal_lists = paal\npaal_mean= paal.groupby(['unit_test_assignment_log_id']).mean(numeric_only =True).reset_index()\npaal_mean.rename(columns={'performance_evaluation':'pe_mean'}, inplace=True)","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:15:54.530578Z","iopub.status.busy":"2023-06-15T07:15:54.530174Z","iopub.status.idle":"2023-06-15T07:17:02.194627Z","shell.execute_reply":"2023-06-15T07:17:02.192975Z","shell.execute_reply.started":"2023-06-15T07:15:54.530548Z"},"id":"T1gKKZxzxg9K"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Adding Problem-level performance features to the data\ntrain=train.merge(paal_mean,on='unit_test_assignment_log_id',how='left')\nval=val.merge(paal_mean,on='unit_test_assignment_log_id',how='left')\ntest=test.merge(paal_mean,on='unit_test_assignment_log_id',how='left')","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:17:02.198670Z","iopub.status.busy":"2023-06-15T07:17:02.198174Z","iopub.status.idle":"2023-06-15T07:17:02.949159Z","shell.execute_reply":"2023-06-15T07:17:02.947900Z","shell.execute_reply.started":"2023-06-15T07:17:02.198609Z"},"id":"d_CYR3O6xg9K"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_new = train.copy()\nval_new = val.copy()","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:17:03.877210Z","iopub.status.busy":"2023-06-15T07:17:03.876899Z","iopub.status.idle":"2023-06-15T07:17:04.464045Z","shell.execute_reply":"2023-06-15T07:17:04.462897Z","shell.execute_reply.started":"2023-06-15T07:17:03.877181Z"},"id":"45sozr39xg9L"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Select Features to be used\nfeature_list = ([\n    'problem_type',\n    'sequence_folder_path_level_2',\n    'sequence_folder_path_level_1',\n    'sequence_folder_path_level_3',\n    'sequence_folder_path_level_4',\n\n    '0', '1', '2', '3', '4', '5',\n       '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17',\n       '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29',\n       '30', '31',\n\n\n    'answer_requested_unit',\n       'assignment_finished_unit', 'assignment_resumed_unit',\n       'assignment_started_unit', 'continue_selected_unit',\n       'correct_response_unit', 'explanation_requested_unit',\n       'hint_requested_unit',\n       'open_response_unit', 'problem_finished_unit', 'problem_started_unit',\n       'wrong_response_unit',\n\n    'answer_requested_total',\n       'assignment_finished_total', 'assignment_resumed_total',\n       'assignment_started_total', 'continue_selected_total',\n       'correct_response_total', 'explanation_requested_total',\n       'hint_requested_total',\n       'open_response_total', 'problem_finished_total',\n       'problem_started_total', 'skill_related_video_requested_total',\n       'wrong_response_total',\n\n        'answer_requested_avgin',\n       'assignment_finished_avgin', 'assignment_resumed_avgin',\n       'assignment_started_avgin', 'continue_selected_avgin',\n       'correct_response_avgin', 'explanation_requested_avgin',\n       'hint_requested_avgin',\n       'open_response_avgin', 'problem_finished_avgin',\n       'problem_started_avgin', 'skill_related_video_requested_avgin',\n       'wrong_response_avgin',\n\n    'answer_requested_problem', 'correct_response_problem',\n       'problem_finished_problem', 'problem_started_problem',\n       'wrong_response_problem', 'open_response_problem',\n       'hint_requested_problem', 'explanation_requested_problem',\n       'skill_related_video_requested_problem',\n\n        'weighted_correct_response',\n       'weighted_problem_finished', 'weighted_problem_started',\n       'weighted_wrong_response', 'weighted_open_response',\n       'weighted_answer_requested', 'weighted_hint_requested',\n       'weighted_explanation_requested',\n       'weighted_skill_related_video_requested',\n\n    'pe_mean',\n]\n)","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:17:04.466360Z","iopub.status.busy":"2023-06-15T07:17:04.465787Z","iopub.status.idle":"2023-06-15T07:17:04.475377Z","shell.execute_reply":"2023-06-15T07:17:04.474111Z","shell.execute_reply.started":"2023-06-15T07:17:04.466318Z"},"id":"G29I713kxg9M"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train=train_new[feature_list]\nX_val=val_new[feature_list]\nX_test=test[feature_list]\ny_val=val_new.score\ny_train=train_new.score","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:17:04.476988Z","iopub.status.busy":"2023-06-15T07:17:04.476602Z","iopub.status.idle":"2023-06-15T07:17:04.744562Z","shell.execute_reply":"2023-06-15T07:17:04.743492Z","shell.execute_reply.started":"2023-06-15T07:17:04.476958Z"},"id":"JpsTEt-4xg9M"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Create correlation matrix\ncorr_matrix = X_train.corr().abs()\n\n#Select upper triangle of correlation matrix\nupper = corr_matrix.where(np.triu(np.ones(corr_matrix.shape), k=1).astype(bool))\n\n#Find features with correlation greater than threshold\nthreshold = 0.90\nto_drop = [column for column in upper.columns if any(upper[column] > threshold)]\n\n#Drop features\nX_train.drop(to_drop, axis=1, inplace=True)\nX_val.drop(to_drop, axis=1, inplace=True)\nX_test.drop(to_drop, axis=1, inplace=True)","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:17:04.746015Z","iopub.status.busy":"2023-06-15T07:17:04.745687Z","iopub.status.idle":"2023-06-15T07:17:09.815765Z","shell.execute_reply":"2023-06-15T07:17:09.814845Z","shell.execute_reply.started":"2023-06-15T07:17:04.745987Z"},"id":"pV3bMfQNxg9M","outputId":"05370dd5-3f12-4513-afb1-aa30d2cc87b3"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"to_drop","metadata":{"execution":{"iopub.execute_input":"2023-06-15T07:17:09.818906Z","iopub.status.busy":"2023-06-15T07:17:09.818314Z","iopub.status.idle":"2023-06-15T07:17:09.827029Z","shell.execute_reply":"2023-06-15T07:17:09.825858Z","shell.execute_reply.started":"2023-06-15T07:17:09.818873Z"},"id":"Nz4boMdxxg9M","outputId":"35bc5b9b-3ba0-467a-a5c5-32ae588a9b6a","scrolled":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Catboost\nimport catboost\n\nevaluation = [(X_train,y_train),(X_val,y_val)]\n\n#Create Final dataset to train the model over all available training data\nX_final = pd.concat([X_train,X_val])\ny_final = pd.concat([y_train,y_val])\nevaluation = [(X_final,y_final)]\n\nn_iterations = 5000\n\n# Define the model with tuned hyperparameters\ncl5 = catboost.CatBoostClassifier(iterations=n_iterations,\n                                  learning_rate=0.01,\n                                  use_best_model=True,\n                                  l2_leaf_reg=200,\n                                  random_strength=1,\n                                  depth=10,\n                                  score_function='L2',\n                                  langevin=True,\n                                  grow_policy='Lossguide',\n                                  auto_class_weights='SqrtBalanced',\n                                  eval_metric='AUC',\n                                  posterior_sampling=True,\n                                  rsm=1,\n                                  bootstrap_type='Bayesian',\n                                  bagging_temperature=0.2,\n                                  sampling_unit='Object'\n)\n\n## Train the model on the train\n# cl5.fit(X_train,y_train,\n#         eval_set=evaluation,\n#         early_stopping_rounds=100,\n#         cat_features=[0,1,2,3,4],\n#        )\n## Train the model on both train and val\ncl5.fit(X_final,y_final,\n        eval_set=evaluation,\n        early_stopping_rounds=100,\n        cat_features=[0,1,2,3,4]\n       )","metadata":{"execution":{"iopub.status.idle":"2023-06-11T19:13:34.014769Z","shell.execute_reply":"2023-06-11T19:13:34.012969Z","shell.execute_reply.started":"2023-06-11T18:47:15.482831Z"},"id":"ZYvrJnWAxg9N","outputId":"3c230b89-13e7-4e73-fc13-32c99e78a7be","scrolled":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\n\nfeature_importance = cl5.feature_importances_\nsorted_idx = np.argsort(feature_importance)\nfig = plt.figure(figsize=(48,24))\nplt.barh(range(len(sorted_idx)), feature_importance[sorted_idx], align='center')\nplt.yticks(range(len(sorted_idx)), np.array(X_train.columns)[sorted_idx])\nplt.title('Feature Importance')","metadata":{"execution":{"iopub.execute_input":"2023-06-01T11:18:24.202308Z","iopub.status.busy":"2023-06-01T11:18:24.202010Z","iopub.status.idle":"2023-06-01T11:18:25.576716Z","shell.execute_reply":"2023-06-01T11:18:25.572479Z","shell.execute_reply.started":"2023-06-01T11:18:24.202285Z"},"id":"HIUkCP7mxg9o","outputId":"433e7190-fc7a-46ed-d676-9bf0c21cabb5"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred_test = cl5.predict_proba(X_test)[:,1]\nevaluation_unit_test_scores['score'] = y_pred_test","metadata":{"execution":{"iopub.execute_input":"2023-05-31T07:34:57.290615Z","iopub.status.busy":"2023-05-31T07:34:57.290226Z","iopub.status.idle":"2023-05-31T07:35:03.295404Z","shell.execute_reply":"2023-05-31T07:35:03.294494Z","shell.execute_reply.started":"2023-05-31T07:34:57.290578Z"},"id":"K11p_A4Txg9t"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"evaluation_unit_test_scores[['id','score']].to_csv('example_submission.csv',index=False)","metadata":{"execution":{"iopub.execute_input":"2023-05-31T07:35:03.297076Z","iopub.status.busy":"2023-05-31T07:35:03.296739Z","iopub.status.idle":"2023-05-31T07:35:03.632630Z","shell.execute_reply":"2023-05-31T07:35:03.631513Z","shell.execute_reply.started":"2023-05-31T07:35:03.297046Z"},"id":"MwbnLi19xg9u"},"execution_count":null,"outputs":[]}]}