{"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 # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport pickle","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","execution":{"iopub.execute_input":"2023-02-04T17:27:13.818603Z","iopub.status.busy":"2023-02-04T17:27:13.818136Z","iopub.status.idle":"2023-02-04T17:27:13.828876Z","shell.execute_reply":"2023-02-04T17:27:13.827895Z"},"papermill":{"duration":0.018716,"end_time":"2023-02-04T17:27:13.831224","exception":false,"start_time":"2023-02-04T17:27:13.812508","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = pd.read_csv('../input/h-and-m-personalized-fashion-recommendations/transactions_train.csv',\n                 usecols = ['customer_id', 'article_id'], dtype=str)\n# df = next(df)","metadata":{"execution":{"iopub.execute_input":"2023-02-04T17:27:13.839506Z","iopub.status.busy":"2023-02-04T17:27:13.839102Z","iopub.status.idle":"2023-02-04T17:28:29.511944Z","shell.execute_reply":"2023-02-04T17:28:29.510671Z"},"papermill":{"duration":75.680252,"end_time":"2023-02-04T17:28:29.514756","exception":false,"start_time":"2023-02-04T17:27:13.834504","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"articles = pd.read_csv('../input/h-and-m-personalized-fashion-recommendations/articles.csv', dtype=str)","metadata":{"execution":{"iopub.execute_input":"2023-02-04T17:28:29.522814Z","iopub.status.busy":"2023-02-04T17:28:29.522338Z","iopub.status.idle":"2023-02-04T17:28:30.912141Z","shell.execute_reply":"2023-02-04T17:28:30.910961Z"},"papermill":{"duration":1.396823,"end_time":"2023-02-04T17:28:30.914739","exception":false,"start_time":"2023-02-04T17:28:29.517916","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"articles = articles[['article_id', 'product_type_name',\n       'product_group_name', \n       'graphical_appearance_name', 'colour_group_name',\n       'perceived_colour_value_name',\n       'perceived_colour_master_name',\n       'department_name', 'index_name',\n       'index_group_name', 'section_name',\n       'garment_group_name']]\n\nfeature_subset = ['product_group_name', 'product_type_name',\n       'graphical_appearance_name', 'colour_group_name',\n       'perceived_colour_value_name',\n       'perceived_colour_master_name',\n       'department_name', 'index_name',\n       'index_group_name', 'section_name',\n       'garment_group_name']","metadata":{"execution":{"iopub.execute_input":"2023-02-04T17:28:30.921973Z","iopub.status.busy":"2023-02-04T17:28:30.921555Z","iopub.status.idle":"2023-02-04T17:28:30.968084Z","shell.execute_reply":"2023-02-04T17:28:30.967138Z"},"papermill":{"duration":0.053194,"end_time":"2023-02-04T17:28:30.970830","exception":false,"start_time":"2023-02-04T17:28:30.917636","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"articles = pd.get_dummies(articles, columns=feature_subset)","metadata":{"execution":{"iopub.execute_input":"2023-02-04T17:28:30.979038Z","iopub.status.busy":"2023-02-04T17:28:30.978055Z","iopub.status.idle":"2023-02-04T17:28:31.500363Z","shell.execute_reply":"2023-02-04T17:28:31.499334Z"},"papermill":{"duration":0.529217,"end_time":"2023-02-04T17:28:31.503079","exception":false,"start_time":"2023-02-04T17:28:30.973862","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# articles.to_csv('articles_embeddings_from_features.csv', index=False)","metadata":{"execution":{"iopub.execute_input":"2023-02-04T17:28:31.510318Z","iopub.status.busy":"2023-02-04T17:28:31.509960Z","iopub.status.idle":"2023-02-04T17:28:31.514947Z","shell.execute_reply":"2023-02-04T17:28:31.513659Z"},"papermill":{"duration":0.011103,"end_time":"2023-02-04T17:28:31.517138","exception":false,"start_time":"2023-02-04T17:28:31.506035","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"customers = df.groupby('customer_id')","metadata":{"execution":{"iopub.execute_input":"2023-02-04T17:28:31.525024Z","iopub.status.busy":"2023-02-04T17:28:31.524057Z","iopub.status.idle":"2023-02-04T17:28:31.529957Z","shell.execute_reply":"2023-02-04T17:28:31.528889Z"},"papermill":{"duration":0.012315,"end_time":"2023-02-04T17:28:31.532449","exception":false,"start_time":"2023-02-04T17:28:31.520134","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"f = open('customer_embeddings_from_features.pickle', 'wb')\n\nfor group in customers.groups:\n    temp = customers.get_group(group).merge(articles, on='article_id').drop('article_id', axis=1)\n    temp = temp[temp.columns[1:]].sum()\n    pickle.dump([group, temp.values], f)","metadata":{"execution":{"iopub.execute_input":"2023-02-04T16:38:57.027970Z","iopub.status.busy":"2023-02-04T16:38:57.027510Z"},"papermill":{"duration":null,"end_time":null,"exception":false,"start_time":"2023-02-04T17:28:31.535449","status":"running"},"tags":[]},"execution_count":null,"outputs":[]}]}