{"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":"# Create the features for ranker model \nI created a notebook to create a dataset for GBT ranker modeling.\nThe data and code comes from Chris [here](https://www.kaggle.com/competitions/otto-recommender-system/discussion/370210).","metadata":{}},{"cell_type":"code","source":"import pandas as pd\nimport glob","metadata":{"execution":{"iopub.status.busy":"2022-12-27T08:12:27.164727Z","iopub.execute_input":"2022-12-27T08:12:27.165691Z","iopub.status.idle":"2022-12-27T08:12:27.170561Z","shell.execute_reply.started":"2022-12-27T08:12:27.165651Z","shell.execute_reply":"2022-12-27T08:12:27.169096Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"type_labels = {'clicks':0, 'carts':1, 'orders':2}\n\ndef load_all():\n    dfs = []\n    for e, chunk_file in enumerate(glob.glob('../input/otto-validation/*_parquet/*')):\n        chunk = pd.read_parquet(chunk_file)\n        chunk.ts = (chunk.ts/1000).astype('int32')\n        chunk['type'] = chunk['type'].map(type_labels).astype('int8')\n        dfs.append(chunk)\n    return pd.concat(dfs).reset_index(drop=True) #.astype({\"ts\": \"datetime64[ms]\"})\n\ndf = load_all()\nprint('All data has shape', df.shape)\ndf.head()","metadata":{"execution":{"iopub.status.busy":"2022-12-27T08:12:27.172750Z","iopub.execute_input":"2022-12-27T08:12:27.173096Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"item_features = df.groupby('aid').agg({'aid':'count','session':'nunique','type':'mean'})\nitem_features.columns = ['item_item_count','item_user_count','item_buy_ratio']\nitem_features.to_parquet('item_features.pqt')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"item_features","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"user_features = df.groupby('session').agg({'session':'count','aid':'nunique','type':'mean'})\nuser_features.columns = ['user_user_count','user_item_count','user_buy_ratio']\nuser_features.to_parquet('user_features.pqt')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"user_features","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}