{"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":"# Simple aid Frequency Baseline","metadata":{}},{"cell_type":"code","source":"import json\nfrom pathlib import Path\nfrom collections import defaultdict\nfrom collections import Counter\n\nimport numpy as np\nimport pandas as pd\n\nfrom tqdm.notebook import tqdm\nimport lightgbm as lgb","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-12-14T11:19:58.172900Z","iopub.execute_input":"2022-12-14T11:19:58.173788Z","iopub.status.idle":"2022-12-14T11:20:00.992343Z","shell.execute_reply.started":"2022-12-14T11:19:58.173654Z","shell.execute_reply":"2022-12-14T11:20:00.990398Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ROOT = Path.cwd().parent\nINPUT = ROOT / \"input\"\nDATA = INPUT / \"otto-recommender-system/\"\n\nfor f in DATA.iterdir():\n    print(f.name)","metadata":{"execution":{"iopub.status.busy":"2022-12-14T11:20:00.994608Z","iopub.execute_input":"2022-12-14T11:20:00.995763Z","iopub.status.idle":"2022-12-14T11:20:01.006446Z","shell.execute_reply.started":"2022-12-14T11:20:00.995693Z","shell.execute_reply":"2022-12-14T11:20:01.004861Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### count aid frequency by session ","metadata":{}},{"cell_type":"code","source":"sorted_ids_list = []\ntest_sessions = pd.read_json(DATA / 'test.jsonl', lines=True, chunksize=100000)\n\nfor chunk in tqdm(test_sessions):\n    \n    for session_id, events in chunk.values:\n        aid_list = []\n        for action in events:\n            aid_list.append(action[\"aid\"])\n\n        cnt = Counter(aid_list)\n        sorted_aids = sorted(set(aid_list), key=lambda x: cnt[x], reverse=True)\n        sorted_ids_list.append([session_id, sorted_aids])","metadata":{"execution":{"iopub.status.busy":"2022-12-14T11:24:25.474135Z","iopub.execute_input":"2022-12-14T11:24:25.475428Z","iopub.status.idle":"2022-12-14T11:25:19.014908Z","shell.execute_reply.started":"2022-12-14T11:24:25.475369Z","shell.execute_reply":"2022-12-14T11:25:19.013590Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(sorted_ids_list[0:3])","metadata":{"execution":{"iopub.status.busy":"2022-12-14T11:25:22.211713Z","iopub.execute_input":"2022-12-14T11:25:22.212851Z","iopub.status.idle":"2022-12-14T11:25:22.218921Z","shell.execute_reply.started":"2022-12-14T11:25:22.212808Z","shell.execute_reply":"2022-12-14T11:25:22.218024Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### make submission\n\nIn this submission, I use the same `aid` sequence for `{session_id}_clicks`, `{session_id}_carts`, `{session_id}_orders`.","metadata":{}},{"cell_type":"code","source":"# Tops from the dummy approach 1\ngeneral_tops = ['1460571 485256 108125 986164 1551213 754412 554660 832192 579690 33343 1006198 688602 29735 329725 184976 1019736 496180 861401 944778 659399',\n          '485256 33343 1460571 986164 554660 660655 1116095 152547 1022566 544144 832192 579690 329725 1043508 558573 1006198 471073 332654 688602 29735',\n          '986164 1460571 329725 1043508 332654 688602 29735 1495817 1022566 1006198 579690 471073 832192 544144 836852 1825743 1236775 166037 147526 508883']","metadata":{"execution":{"iopub.status.busy":"2022-12-13T15:24:01.520355Z","iopub.execute_input":"2022-12-13T15:24:01.520860Z","iopub.status.idle":"2022-12-13T15:24:01.526662Z","shell.execute_reply.started":"2022-12-13T15:24:01.520810Z","shell.execute_reply":"2022-12-13T15:24:01.525360Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Dummy approach 1 + top20\n# Combining these 2, as dummy approach 1 only has in many cases less than 20 total aids predicted\ndata_list = []\nfor session_id, sorted_aids in sorted_ids_list:\n    sorted_aids_20_str = \" \".join(map(str, sorted_aids[:20]))\n    data_list.append([f\"{session_id}_clicks\", \" \".join((sorted_aids_20_str + \" \" + general_tops[0]).split(\" \")[:20])])\n    data_list.append([f\"{session_id}_carts\", \" \".join((sorted_aids_20_str + \" \" + general_tops[1]).split(\" \")[:20])])\n    data_list.append([f\"{session_id}_orders\", \" \".join((sorted_aids_20_str + \" \" + general_tops[2]).split(\" \")[:20])])","metadata":{"execution":{"iopub.status.busy":"2022-12-13T15:33:58.886503Z","iopub.execute_input":"2022-12-13T15:33:58.887594Z","iopub.status.idle":"2022-12-13T15:34:21.129656Z","shell.execute_reply.started":"2022-12-13T15:33:58.887519Z","shell.execute_reply":"2022-12-13T15:34:21.128363Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub = pd.DataFrame(\n    data_list, columns=[\"session_type\", \"labels\"])","metadata":{"execution":{"iopub.status.busy":"2022-12-13T15:35:08.490804Z","iopub.execute_input":"2022-12-13T15:35:08.491326Z","iopub.status.idle":"2022-12-13T15:35:09.767609Z","shell.execute_reply.started":"2022-12-13T15:35:08.491285Z","shell.execute_reply":"2022-12-13T15:35:09.766475Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub.to_csv(\"submission.csv\", index=False)","metadata":{"execution":{"iopub.status.busy":"2022-12-13T15:35:58.204065Z","iopub.execute_input":"2022-12-13T15:35:58.205045Z","iopub.status.idle":"2022-12-13T15:36:18.490023Z","shell.execute_reply.started":"2022-12-13T15:35:58.204983Z","shell.execute_reply":"2022-12-13T15:36:18.488612Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub.head()","metadata":{"execution":{"iopub.status.busy":"2022-12-13T15:35:16.554228Z","iopub.execute_input":"2022-12-13T15:35:16.554764Z","iopub.status.idle":"2022-12-13T15:35:16.567093Z","shell.execute_reply.started":"2022-12-13T15:35:16.554727Z","shell.execute_reply":"2022-12-13T15:35:16.566224Z"},"trusted":true},"execution_count":null,"outputs":[]}]}