{"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\nimport tensorflow as tf\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-02T09:26:54.084274Z","iopub.execute_input":"2023-08-02T09:26:54.084745Z","iopub.status.idle":"2023-08-02T09:27:03.549861Z","shell.execute_reply.started":"2023-08-02T09:26:54.084697Z","shell.execute_reply":"2023-08-02T09:27:03.548816Z"},"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(0)\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-02T09:27:03.551616Z","iopub.execute_input":"2023-08-02T09:27:03.552350Z","iopub.status.idle":"2023-08-02T09:27:03.560943Z","shell.execute_reply.started":"2023-08-02T09:27:03.552311Z","shell.execute_reply":"2023-08-02T09:27:03.559142Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"models = {}\n\nfor dirname, _ , filenames in os.walk(\"/kaggle/input/no-feature-models\"):\n    for filename in filenames:\n        if filename.endswith(\".keras\"):\n            models[filename.split('.')[0]] = tf.keras.models.load_model(os.path.join(dirname, filename), compile=True)","metadata":{"execution":{"iopub.status.busy":"2023-08-02T09:27:03.562444Z","iopub.execute_input":"2023-08-02T09:27:03.563080Z","iopub.status.idle":"2023-08-02T09:27:05.490285Z","shell.execute_reply.started":"2023-08-02T09:27:03.563029Z","shell.execute_reply":"2023-08-02T09:27:05.489354Z"},"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[f'nn_{q}']\n        prediction = int(est.predict(test_df)[0])\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-02T09:27:05.491419Z","iopub.execute_input":"2023-08-02T09:27:05.491697Z","iopub.status.idle":"2023-08-02T09:27:10.252988Z","shell.execute_reply.started":"2023-08-02T09:27:05.491671Z","shell.execute_reply":"2023-08-02T09:27:10.252140Z"},"trusted":true},"execution_count":null,"outputs":[]}]}