{"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":"!pip install catboost","metadata":{"execution":{"iopub.status.busy":"2023-06-04T15:09:38.796002Z","iopub.execute_input":"2023-06-04T15:09:38.796505Z","iopub.status.idle":"2023-06-04T15:10:11.896102Z","shell.execute_reply.started":"2023-06-04T15:09:38.796447Z","shell.execute_reply":"2023-06-04T15:10:11.894281Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy\nimport pandas\nfrom catboost import CatBoostClassifier","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-06-04T15:10:11.898149Z","iopub.execute_input":"2023-06-04T15:10:11.898636Z","iopub.status.idle":"2023-06-04T15:10:12.692106Z","shell.execute_reply.started":"2023-06-04T15:10:11.898594Z","shell.execute_reply":"2023-06-04T15:10:12.690977Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def preprocess(df):\n\n    data = df.sort_values(['session_id','index'])\n    data['event_time'] = 0\n    try:\n        data.loc[1:,'event_time'] = (data.elapsed_time[1:].reset_index() - data.elapsed_time[:-1].reset_index())['elapsed_time'].tolist()\n        data.loc[data['index']==0,'event_time']=0\n    except:\n        pass\n\n    cutscene_click =  data[data.event_name=='cutscene_click'].groupby('session_id').mean()[['event_time']]\n    person_click = data[data.event_name=='person_click'].groupby('session_id').agg({'event_time':['mean'],'fqid':['nunique','count']})\n    navigate_click= data[data.event_name=='navigate_click'].groupby('session_id').agg({'event_time':'count','room_coor_x':['mean','std'], 'room_coor_y':['mean','std'],'screen_coor_x':['mean','std'], 'screen_coor_y':['mean','std']})\n    observation_click = data[data.event_name=='observation_click'].groupby('session_id').agg({'fqid':['nunique','count']})\n    notification_click = data[data.event_name=='notification_click'].groupby('session_id').agg({'room_fqid':['nunique','count']})\n    object_click = data[data.event_name=='object_click'].groupby(['session_id']).agg({'event_time':['count']})\n    object_hover = data[data.event_name == 'object_hover'].groupby('session_id').agg({'hover_duration':['mean','count']})\n    map_hoover =  data[data.event_name == 'map_hover'].groupby('session_id').agg({'hover_duration':['mean','count']})\n    map_click  = data[data.event_name == 'map_click'].groupby('session_id').agg({'room_fqid':['nunique','count']})\n\n    cutscene_click.columns = ['screen_avg_time']\n    person_click.columns = [ 'person_click' + '_'.join(i[1:]) for i in person_click.columns ]\n    navigate_click.columns = [ 'navigate_click' + '_'.join(i) for i in navigate_click.columns ]\n    observation_click.columns = ['observation_click' + '_'.join(i[1:]) for i in observation_click.columns]\n    notification_click.columns = ['notification_click' +  '_'.join(i[1:]) for i in notification_click.columns ]\n    object_click.columns = ['object_click']\n    object_hover.columns = ['object_hover' +  '_'.join(i[1:]) for i in object_hover.columns ]\n    map_hoover.columns = ['map_hoover' +  '_'.join(i[1:]) for i in map_hoover.columns ]\n    map_click.columns = ['map_click' +  '_'.join(i[1:]) for i in map_click.columns ]\n\n    return pandas.concat([cutscene_click, person_click, navigate_click, \\\n        observation_click, notification_click, object_click, \\\n            object_hover, map_click, map_hoover,],axis=1).fillna(0)","metadata":{"execution":{"iopub.status.busy":"2023-06-04T15:10:12.696078Z","iopub.execute_input":"2023-06-04T15:10:12.696420Z","iopub.status.idle":"2023-06-04T15:10:12.719613Z","shell.execute_reply.started":"2023-06-04T15:10:12.696392Z","shell.execute_reply":"2023-06-04T15:10:12.718431Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"models = [ CatBoostClassifier().load_model('/kaggle/input/catboost-model/model_'+str(i)) for i in range(1,19) ]","metadata":{"execution":{"iopub.status.busy":"2023-06-04T15:10:12.721961Z","iopub.execute_input":"2023-06-04T15:10:12.722276Z","iopub.status.idle":"2023-06-04T15:10:14.070466Z","shell.execute_reply.started":"2023-06-04T15:10:12.722242Z","shell.execute_reply":"2023-06-04T15:10:14.069440Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"threshold_models =[0.45,0.84,0.65,0.4 ,0.53,0.43,0.46,0.48,0.45,0.53,0.5 ,0.44,0.59,0.46,0.53,0.46,0.47,0.61]\n","metadata":{"execution":{"iopub.status.busy":"2023-06-04T15:10:14.071868Z","iopub.execute_input":"2023-06-04T15:10:14.072185Z","iopub.status.idle":"2023-06-04T15:10:14.078199Z","shell.execute_reply.started":"2023-06-04T15:10:14.072158Z","shell.execute_reply":"2023-06-04T15:10:14.077202Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in range(18):\n    models[i].set_probability_threshold(threshold_models[i])","metadata":{"execution":{"iopub.status.busy":"2023-06-04T15:10:14.079684Z","iopub.execute_input":"2023-06-04T15:10:14.080508Z","iopub.status.idle":"2023-06-04T15:10:14.088285Z","shell.execute_reply.started":"2023-06-04T15:10:14.080455Z","shell.execute_reply":"2023-06-04T15:10:14.087320Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import jo_wilder_310\nenv = jo_wilder_310.make_env()\niter_test = env.iter_test()","metadata":{"execution":{"iopub.status.busy":"2023-06-04T15:10:14.089537Z","iopub.execute_input":"2023-06-04T15:10:14.089955Z","iopub.status.idle":"2023-06-04T15:10:14.105175Z","shell.execute_reply.started":"2023-06-04T15:10:14.089926Z","shell.execute_reply":"2023-06-04T15:10:14.104125Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for (test, sample_submission) in iter_test:\n    data_1 =  test[test.level_group == '0-4']\n    data_2 =  test[test.level_group == '5-12']\n    data_3 =  test[test.level_group == '13-22']\n    \n    if data_1.size!=0:\n        temp = preprocess(data_1)\n        for i in range(1,4):\n            predict = models[i-1].predict(temp)\n            for sess in range(temp.shape[0]):\n                tmp = str(temp.index[sess])+'_q'+str(i)\n                mask = sample_submission.session_id == tmp\n                sample_submission.loc[mask,'correct'] = predict[sess]\n                \n    if data_2.size!=0:\n        temp = preprocess(data_2)\n        for i in range(4,14):\n            predict = models[i-1].predict(temp)\n            for sess in range(temp.shape[0]):\n                tmp = str(temp.index[sess])+'_q'+str(i)\n                mask = sample_submission.session_id == tmp\n                sample_submission.loc[mask,'correct'] = predict[sess]\n                \n    if data_3.size!=0:\n        temp = preprocess(data_3)\n        for i in range(14,19):\n            predict = models[i-1].predict(temp)\n            for sess in range(temp.shape[0]):\n                tmp = str(temp.index[sess])+'_q'+str(i)\n                mask = sample_submission.session_id == tmp\n                sample_submission.loc[mask,'correct'] = predict[sess]\n                \n                \n                \n    env.predict(sample_submission)","metadata":{"execution":{"iopub.status.busy":"2023-06-04T15:10:14.106594Z","iopub.execute_input":"2023-06-04T15:10:14.107160Z","iopub.status.idle":"2023-06-04T15:10:14.632370Z","shell.execute_reply.started":"2023-06-04T15:10:14.107116Z","shell.execute_reply":"2023-06-04T15:10:14.631556Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pandas.read_csv('/kaggle/working/submission.csv')","metadata":{"execution":{"iopub.status.busy":"2023-06-04T15:10:14.633855Z","iopub.execute_input":"2023-06-04T15:10:14.634472Z","iopub.status.idle":"2023-06-04T15:10:14.651031Z","shell.execute_reply.started":"2023-06-04T15:10:14.634440Z","shell.execute_reply":"2023-06-04T15:10:14.650171Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}