{"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 numpy as np\nimport pandas as pd\nimport os\nfrom joblib import load\n\nimport jo_wilder_310\n\nenv = jo_wilder_310.make_env()\niter_test = env.iter_test()","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-08-03T16:25:09.769274Z","iopub.execute_input":"2023-08-03T16:25:09.770062Z","iopub.status.idle":"2023-08-03T16:25:09.928970Z","shell.execute_reply.started":"2023-08-03T16:25:09.770022Z","shell.execute_reply":"2023-08-03T16:25:09.927838Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"CATEGORICAL = ['event_name', 'name','fqid', 'room_fqid', 'text_fqid']\n\ndef feature_engineer(dataset_df):\n    dfs = []\n    for c in CATEGORICAL:\n        tmp = dataset_df.groupby(['session_id','level_group'])[c].agg('nunique')\n        tmp.name = tmp.name + '_nunique'\n        dfs.append(tmp)\n    dataset_df = pd.concat(dfs,axis=1)\n    dataset_df = dataset_df.fillna(-1)\n    dataset_df = dataset_df.reset_index()\n    dataset_df = dataset_df.set_index('session_id')\n    return dataset_df","metadata":{"execution":{"iopub.status.busy":"2023-08-03T16:25:09.933529Z","iopub.execute_input":"2023-08-03T16:25:09.933872Z","iopub.status.idle":"2023-08-03T16:25:09.941617Z","shell.execute_reply.started":"2023-08-03T16:25:09.933844Z","shell.execute_reply":"2023-08-03T16:25:09.940692Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"models = {}\n\nfor dirname, _ , filenames in os.walk(\"/kaggle/input/svm-3fold-nofeng-unbal\"):\n    for filename in filenames:\n        models[int(filename.split('.')[0])] = load(os.path.join(dirname, filename))","metadata":{"execution":{"iopub.status.busy":"2023-08-03T16:25:09.943106Z","iopub.execute_input":"2023-08-03T16:25:09.943771Z","iopub.status.idle":"2023-08-03T16:25:11.830460Z","shell.execute_reply.started":"2023-08-03T16:25:09.943738Z","shell.execute_reply":"2023-08-03T16:25:11.829416Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"limits = {'0-4':(1,4), '5-12':(4,14), '13-22':(14,19)}\n\nfor (test, sample_submission) in iter_test:\n    test_df = feature_engineer(test)\n    \n    grp = test_df.level_group.values[0]\n    \n    a,b = limits[grp]\n    \n    test_df = test_df.loc[test_df.level_group == grp]\n    test_df = test_df.drop(\"level_group\", axis=1)\n    \n    for q in range(a,b):\n        \n        est = models[q]\n        prediction = est.predict(test_df)\n        mask = sample_submission.session_id.str.contains(f'q{q}')\n        sample_submission.loc[mask,'correct'] = prediction\n\n    env.predict(sample_submission)","metadata":{"execution":{"iopub.status.busy":"2023-08-03T16:25:11.832603Z","iopub.execute_input":"2023-08-03T16:25:11.833300Z","iopub.status.idle":"2023-08-03T16:25:12.229419Z","shell.execute_reply.started":"2023-08-03T16:25:11.833264Z","shell.execute_reply":"2023-08-03T16:25:12.228539Z"},"trusted":true},"execution_count":null,"outputs":[]}]}