{"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 polars as pl","metadata":{"execution":{"iopub.status.busy":"2023-04-14T21:33:32.370321Z","iopub.execute_input":"2023-04-14T21:33:32.371284Z","iopub.status.idle":"2023-04-14T21:33:32.429985Z","shell.execute_reply.started":"2023-04-14T21:33:32.371242Z","shell.execute_reply":"2023-04-14T21:33:32.428558Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"most_popular_articles = (\n    pl.read_csv(\"/kaggle/input/h-and-m-personalized-fashion-recommendations/transactions_train.csv\", columns=[\"article_id\"])\n    .get_column(\"article_id\")\n    .value_counts()\n    .sort(\"counts\", descending=True)\n    .head(12)\n    .get_column(\"article_id\")\n    .to_list()\n)","metadata":{"execution":{"iopub.status.busy":"2023-04-14T22:12:22.416014Z","iopub.execute_input":"2023-04-14T22:12:22.416423Z","iopub.status.idle":"2023-04-14T22:12:25.397469Z","shell.execute_reply.started":"2023-04-14T22:12:22.416385Z","shell.execute_reply":"2023-04-14T22:12:25.396231Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"most_popular_articles_per_user = (\n    pl.read_csv(\"/kaggle/input/h-and-m-personalized-fashion-recommendations/transactions_train.csv\", columns=[\"customer_id\", \"article_id\"])\n    .groupby([\"customer_id\", \"article_id\"])\n    .agg(pl.count())\n    .groupby(\"customer_id\")\n    .agg(pl.col(\"article_id\").sort_by(\"count\", descending=True).head(12))\n)","metadata":{"execution":{"iopub.status.busy":"2023-04-14T22:12:44.245619Z","iopub.execute_input":"2023-04-14T22:12:44.246779Z","iopub.status.idle":"2023-04-14T22:13:29.843842Z","shell.execute_reply.started":"2023-04-14T22:12:44.246736Z","shell.execute_reply":"2023-04-14T22:13:29.841615Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"improved_submission = (\n    pl.read_csv(\"/kaggle/input/h-and-m-personalized-fashion-recommendations/sample_submission.csv\", columns=[\"customer_id\"])\n    .join(most_popular_articles_per_user, on=\"customer_id\", how=\"left\")\n    .with_columns([\n        pl.col(\"article_id\").fill_null([]).alias(\"personal_top_<=12\"),\n        pl.lit([most_popular_articles]).alias(\"global_top_12\")\n    ])\n    .with_columns(\n        pl.col(\"personal_top_<=12\").arr.concat(pl.col(\"global_top_12\")).arr.head(12).alias(\"prediction\")\n    )\n    .select([\n        pl.col(\"customer_id\"),\n        pl.col(\"prediction\").arr.eval(\"0\" + pl.element().cast(pl.Utf8)).arr.join(\" \")\n    ])\n)","metadata":{"execution":{"iopub.status.busy":"2023-04-14T22:13:29.847145Z","iopub.execute_input":"2023-04-14T22:13:29.848095Z","iopub.status.idle":"2023-04-14T22:13:58.762636Z","shell.execute_reply.started":"2023-04-14T22:13:29.847991Z","shell.execute_reply":"2023-04-14T22:13:58.760439Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"improved_submission.write_csv(\"submission.csv\")","metadata":{"execution":{"iopub.status.busy":"2023-04-14T21:57:33.551696Z","iopub.execute_input":"2023-04-14T21:57:33.552747Z","iopub.status.idle":"2023-04-14T21:57:34.262747Z","shell.execute_reply.started":"2023-04-14T21:57:33.552701Z","shell.execute_reply":"2023-04-14T21:57:34.261080Z"},"trusted":true},"execution_count":null,"outputs":[]}]}