{"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":"# Loading the data","metadata":{"papermill":{"duration":0.002906,"end_time":"2023-01-06T20:36:28.594911","exception":false,"start_time":"2023-01-06T20:36:28.592005","status":"completed"},"tags":[]}},{"cell_type":"code","source":"!pip install polars","metadata":{"papermill":{"duration":16.233474,"end_time":"2023-01-06T20:36:44.831548","exception":false,"start_time":"2023-01-06T20:36:28.598074","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-01-11T15:38:20.438504Z","iopub.execute_input":"2023-01-11T15:38:20.438981Z","iopub.status.idle":"2023-01-11T15:38:32.795606Z","shell.execute_reply.started":"2023-01-11T15:38:20.438890Z","shell.execute_reply":"2023-01-11T15:38:32.794316Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import polars as pl\npaths = ['/kaggle/input/candidate-rerank-model-lb-0-575/submission.csv', # 0.575\n         '/kaggle/input/otto-pipeline2-lb-0-576/submission.csv', # 0.576\n         '/kaggle/input/otto-tuning-candidate-rerank-model-lb-0-577/submission.csv' # 0.577\n        ]","metadata":{"papermill":{"duration":0.075098,"end_time":"2023-01-06T20:36:44.911392","exception":false,"start_time":"2023-01-06T20:36:44.836294","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-01-11T15:38:32.799753Z","iopub.execute_input":"2023-01-11T15:38:32.800199Z","iopub.status.idle":"2023-01-11T15:38:32.975254Z","shell.execute_reply.started":"2023-01-11T15:38:32.800156Z","shell.execute_reply":"2023-01-11T15:38:32.974083Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def read_sub(path, weight=1): \n    return (\n        pl.read_csv(path)\n            .with_column(pl.col('labels').str.split(by=' '))\n            .with_column(pl.lit(weight).alias('vote'))\n            .explode('labels')\n            .rename({'labels': 'aid'})\n            .with_column(pl.col('aid').cast(pl.UInt32))\n            .with_column(pl.col('vote').cast(pl.UInt8))\n    )","metadata":{"papermill":{"duration":0.017424,"end_time":"2023-01-06T20:36:44.933399","exception":false,"start_time":"2023-01-06T20:36:44.915975","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-01-11T15:38:32.976653Z","iopub.execute_input":"2023-01-11T15:38:32.977071Z","iopub.status.idle":"2023-01-11T15:38:32.984224Z","shell.execute_reply.started":"2023-01-11T15:38:32.977027Z","shell.execute_reply":"2023-01-11T15:38:32.983043Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"subs = [read_sub(path) for path in paths]\nsubs[0].head()","metadata":{"papermill":{"duration":76.250479,"end_time":"2023-01-06T20:38:01.189160","exception":false,"start_time":"2023-01-06T20:36:44.938681","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-01-11T15:38:32.986897Z","iopub.execute_input":"2023-01-11T15:38:32.987670Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"subs = subs[0].join(subs[1], how='outer', on=['session_type', 'aid']).join(subs[2], how='outer', on=['session_type', 'aid'], suffix='_right2')\nsubs.head()","metadata":{"papermill":{"duration":281.722789,"end_time":"2023-01-06T20:42:42.916753","exception":false,"start_time":"2023-01-06T20:38:01.193964","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"subs = (subs\n    .fill_null(0)\n    .with_column((pl.col('vote') + pl.col('vote_right') + pl.col('vote_right2')).alias('vote_sum'))\n    .drop(['vote', 'vote_right', 'vote_right2'])\n    .sort(by='vote_sum')\n    .reverse()\n)\n\nsubs.head()","metadata":{"papermill":{"duration":22.111357,"end_time":"2023-01-06T20:43:05.033344","exception":false,"start_time":"2023-01-06T20:42:42.921987","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\npreds = subs.groupby('session_type').agg([\n    pl.col('aid').head(20).alias('labels')\n])\n\npreds = preds.with_column(pl.col('labels').apply(lambda lst: ' '.join([str(aid) for aid in lst])))","metadata":{"papermill":{"duration":335.206638,"end_time":"2023-01-06T20:48:40.245886","exception":false,"start_time":"2023-01-06T20:43:05.039248","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"preds.write_csv('submission.csv')","metadata":{"papermill":{"duration":4.459081,"end_time":"2023-01-06T20:48:44.718788","exception":false,"start_time":"2023-01-06T20:48:40.259707","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]}]}