{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":31254,"databundleVersionId":3103714,"sourceType":"competition"}],"dockerImageVersionId":30528,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"raw","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19"}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport seaborn as sns\nfrom matplotlib import pyplot as plt\nimport networkx as nx\nfrom gensim.models import Word2Vec\nfrom sklearn.metrics.pairwise import cosine_similarity\nimport matplotlib.image as mpimg\nimport random","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:21:58.615034Z","iopub.execute_input":"2023-08-20T11:21:58.615404Z","iopub.status.idle":"2023-08-20T11:21:58.621505Z","shell.execute_reply.started":"2023-08-20T11:21:58.615374Z","shell.execute_reply":"2023-08-20T11:21:58.620569Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"articles = pd.read_csv(\"/kaggle/input/h-and-m-personalized-fashion-recommendations/articles.csv\")\ncustomers = pd.read_csv(\"/kaggle/input/h-and-m-personalized-fashion-recommendations/customers.csv\")\ntransactions = pd.read_csv(\"/kaggle/input/h-and-m-personalized-fashion-recommendations/transactions_train.csv\")","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:21:58.770907Z","iopub.execute_input":"2023-08-20T11:21:58.771216Z","iopub.status.idle":"2023-08-20T11:22:43.983577Z","shell.execute_reply.started":"2023-08-20T11:21:58.771189Z","shell.execute_reply":"2023-08-20T11:22:43.982352Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"item_freq = transactions.groupby('article_id')['customer_id'].nunique()\nuser_freq = transactions.groupby('customer_id')['article_id'].nunique()\n\nitems = item_freq[item_freq >= 100].index\nusers = user_freq[user_freq >= 100].index\n\nfiltered_df = transactions[transactions['article_id'].isin(items) & transactions['customer_id'].isin(users)]","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:22:46.754508Z","iopub.execute_input":"2023-08-20T11:22:46.754914Z","iopub.status.idle":"2023-08-20T11:23:36.914173Z","shell.execute_reply.started":"2023-08-20T11:22:46.754872Z","shell.execute_reply":"2023-08-20T11:23:36.913105Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"freq = filtered_df.groupby(['customer_id', 'article_id']).size().reset_index(name='frequency')\n\nGraphTravel_HM = filtered_df.merge(freq, on=['customer_id', 'article_id'], how='left')\nGraphTravel_HM = GraphTravel_HM[GraphTravel_HM['frequency'] >= 10]","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:23:36.915463Z","iopub.execute_input":"2023-08-20T11:23:36.915827Z","iopub.status.idle":"2023-08-20T11:23:47.477473Z","shell.execute_reply.started":"2023-08-20T11:23:36.915795Z","shell.execute_reply":"2023-08-20T11:23:47.476408Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"display(GraphTravel_HM)\n\nprint(\"unique customer_id\" , GraphTravel_HM.customer_id.nunique())\nprint(\"unique article_id\" , GraphTravel_HM.article_id.nunique())","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:23:47.482159Z","iopub.execute_input":"2023-08-20T11:23:47.485681Z","iopub.status.idle":"2023-08-20T11:23:47.525186Z","shell.execute_reply.started":"2023-08-20T11:23:47.485645Z","shell.execute_reply":"2023-08-20T11:23:47.524392Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.histplot(GraphTravel_HM['frequency'], kde=True, bins=30)\nplt.title('Distribution of frequency')\nplt.xlabel('Frequency')\nplt.ylabel('Density')\n\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:23:47.529218Z","iopub.execute_input":"2023-08-20T11:23:47.531722Z","iopub.status.idle":"2023-08-20T11:23:48.374307Z","shell.execute_reply.started":"2023-08-20T11:23:47.531688Z","shell.execute_reply":"2023-08-20T11:23:48.373344Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"unique_customer_ids = GraphTravel_HM['customer_id'].unique()\ncustomer_id_mapping = {id: i for i, id in enumerate(unique_customer_ids)}\nGraphTravel_HM['customer_id'] = GraphTravel_HM['customer_id'].map(customer_id_mapping)\n\nitem_name_mapping = dict(zip(articles['article_id'], articles['prod_name'])) # prod_name","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:23:48.379026Z","iopub.execute_input":"2023-08-20T11:23:48.38011Z","iopub.status.idle":"2023-08-20T11:23:48.443632Z","shell.execute_reply.started":"2023-08-20T11:23:48.380071Z","shell.execute_reply":"2023-08-20T11:23:48.442611Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"G = nx.Graph()\n\nfor index, row in GraphTravel_HM.iterrows():\n    G.add_node(row['customer_id'], type='user')\n    G.add_node(row['article_id'], type='item')\n    G.add_edge(row['customer_id'], row['article_id'], weight=row['frequency'])","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:23:48.444936Z","iopub.execute_input":"2023-08-20T11:23:48.44593Z","iopub.status.idle":"2023-08-20T11:23:49.984171Z","shell.execute_reply.started":"2023-08-20T11:23:48.445897Z","shell.execute_reply":"2023-08-20T11:23:49.983121Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# biased random walk  \ndef biased_random_walk(G, start_node, walk_length, p=1, q=1):\n    walk = [start_node]\n\n    while len(walk) < walk_length:\n        cur_node = walk[-1]\n        cur_neighbors = list(G.neighbors(cur_node))\n\n        if len(cur_neighbors) > 0:\n            if len(walk) == 1:\n                walk.append(random.choice(cur_neighbors))\n            else:\n                prev_node = walk[-2]\n\n                probability = []\n                for neighbor in cur_neighbors:\n                    if neighbor == prev_node:\n                        # Return parameter \n                        probability.append(1/p)\n                    elif G.has_edge(neighbor, prev_node):\n                        # Stay parameter \n                        probability.append(1)\n                    else:\n                        # In-out parameter \n                        probability.append(1/q)\n\n                probability = np.array(probability)\n                probability = probability / probability.sum()  # normalize\n\n                next_node = np.random.choice(cur_neighbors, p=probability)\n                walk.append(next_node)\n        else:\n            break\n\n    return walk","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:23:49.985582Z","iopub.execute_input":"2023-08-20T11:23:49.98619Z","iopub.status.idle":"2023-08-20T11:23:49.995532Z","shell.execute_reply.started":"2023-08-20T11:23:49.986157Z","shell.execute_reply":"2023-08-20T11:23:49.994495Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def generate_walks(G, num_walks, walk_length, p=1, q=1):\n    walks = []\n    nodes = list(G.nodes())\n    for _ in range(num_walks):\n        random.shuffle(nodes)  # to ensure randomness\n        for node in nodes:\n            walk_from_node = biased_random_walk(G, node, walk_length, p, q)\n            walks.append(walk_from_node)\n    return walks","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:23:49.996721Z","iopub.execute_input":"2023-08-20T11:23:49.99789Z","iopub.status.idle":"2023-08-20T11:23:50.008379Z","shell.execute_reply.started":"2023-08-20T11:23:49.997853Z","shell.execute_reply":"2023-08-20T11:23:50.007253Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Random Walk \nwalks = generate_walks(G, num_walks=10, walk_length=20, p=9, q=1)\nfiltered_walks = [walk for walk in walks if len(walk) >= 5]\n\n# to String  (for Word2Vec input)\nwalks = [[str(node) for node in walk] for walk in walks]\n\n# Word2Vec train\nmodel = Word2Vec(walks, vector_size=128, window=5, min_count=0,  hs=1, sg=1, workers=4, epochs=10)\n\n# node embedding extract\nembeddings = {node_id: model.wv[node_id] for node_id in model.wv.index_to_key}","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:23:50.009854Z","iopub.execute_input":"2023-08-20T11:23:50.010186Z","iopub.status.idle":"2023-08-20T11:24:34.699478Z","shell.execute_reply.started":"2023-08-20T11:23:50.010155Z","shell.execute_reply":"2023-08-20T11:24:34.698444Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def get_user_embedding(user_id, embeddings):\n    return embeddings[str(user_id)]","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:34.700791Z","iopub.execute_input":"2023-08-20T11:24:34.701119Z","iopub.status.idle":"2023-08-20T11:24:34.707418Z","shell.execute_reply.started":"2023-08-20T11:24:34.701086Z","shell.execute_reply":"2023-08-20T11:24:34.706361Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def get_rated_items(user_id, df):\n    return set(df[df['customer_id'] == user_id]['article_id'])","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:34.708743Z","iopub.execute_input":"2023-08-20T11:24:34.70985Z","iopub.status.idle":"2023-08-20T11:24:34.721069Z","shell.execute_reply.started":"2023-08-20T11:24:34.709815Z","shell.execute_reply":"2023-08-20T11:24:34.719825Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def calculate_similarities(user_id, df, embeddings):\n    rated_items = get_rated_items(user_id, df)\n    user_embedding = get_user_embedding(user_id, embeddings)\n\n    item_similarities = []\n    for item_id in set(df['article_id']):\n        if item_id not in rated_items:  \n            item_embedding = embeddings[str(item_id)]\n            similarity = cosine_similarity([user_embedding], [item_embedding])[0][0]\n            item_similarities.append((item_id, similarity))\n\n    return item_similarities","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:34.724141Z","iopub.execute_input":"2023-08-20T11:24:34.725047Z","iopub.status.idle":"2023-08-20T11:24:34.735025Z","shell.execute_reply.started":"2023-08-20T11:24:34.725015Z","shell.execute_reply":"2023-08-20T11:24:34.733991Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def show_images(items, item_name_mapping, num_items, show_similarity=False):\n    f, ax = plt.subplots(1, num_items, figsize=(20,10))\n    lst_items = []\n    if num_items == 1:\n        ax = [ax]\n    for i, item in enumerate(items):\n        item_id, similarity = item\n        lst_items.append(item_id)\n        print(f\"- Item {item_id}: {item_name_mapping[item_id]}\", end='')\n        if show_similarity:\n            print(f\" with similarity score: {similarity}\")\n        else:\n            print()\n        img_path = f\"/kaggle/input/h-and-m-personalized-fashion-recommendations/images/0{str(item_id)[:2]}/0{int(item_id)}.jpg\"\n        try:\n            img = mpimg.imread(img_path)\n            ax[i].imshow(img)\n            ax[i].set_title(f'Item {item_id}')\n            ax[i].set_xticks([], [])\n            ax[i].set_yticks([], [])\n            ax[i].grid(False)\n        except FileNotFoundError:\n            print(f\"Image for item {item_id} not found.\")\n    plt.show()","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:34.736485Z","iopub.execute_input":"2023-08-20T11:24:34.736845Z","iopub.status.idle":"2023-08-20T11:24:34.749483Z","shell.execute_reply.started":"2023-08-20T11:24:34.73679Z","shell.execute_reply":"2023-08-20T11:24:34.748339Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def recommend_items(user_id, df, embeddings, item_name_mapping, num_items):\n    rated_items = get_rated_items(user_id, df)\n    \n    print(f\"User {user_id} has purchased:\")\n    show_images([(item_id, 0) for item_id in list(rated_items)[:5]], item_name_mapping, min(len(rated_items), 5))\n    \n    item_similarities = calculate_similarities(user_id, df, embeddings)\n    recommended_items = sorted(item_similarities, key=lambda x: x[1], reverse=True)[:num_items]\n\n    print(f\"\\nRecommended items for user {user_id}:\")\n    show_images(recommended_items, item_name_mapping, num_items, show_similarity=True)","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:34.751119Z","iopub.execute_input":"2023-08-20T11:24:34.751583Z","iopub.status.idle":"2023-08-20T11:24:34.765861Z","shell.execute_reply.started":"2023-08-20T11:24:34.751553Z","shell.execute_reply":"2023-08-20T11:24:34.764956Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# costomer 45's top 5 \nimport time\nstart = time.time()\nrecommend_items(21, GraphTravel_HM, embeddings, item_name_mapping, num_items=10)\nprint(time.time()-start)","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:34.767065Z","iopub.execute_input":"2023-08-20T11:24:34.767946Z","iopub.status.idle":"2023-08-20T11:24:39.378572Z","shell.execute_reply.started":"2023-08-20T11:24:34.767916Z","shell.execute_reply":"2023-08-20T11:24:39.377688Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def calculate_precision_recall(actual_items, recommended_items):\n    common_items = actual_items.intersection(recommended_items)\n    precision = len(common_items) / len(recommended_items) if recommended_items else 0\n    recall = len(common_items) / len(actual_items) if actual_items else 0\n    return precision, recall\n\ndef calculate_novelty(recommended_items, user_interactions):\n    new_items = recommended_items - user_interactions\n    novelty = len(new_items) / len(recommended_items) if recommended_items else 0\n    return novelty\n\ndef calculate_diversity(recommended_items, embeddings):\n    item_ids = list(recommended_items)\n    item_embeddings = [embeddings[str(item_id)] for item_id in item_ids]\n    \n    diversity_score = 0.0\n    num_pairs = 0\n\n    for i in range(len(item_ids)):\n        for j in range(i + 1, len(item_ids)):\n            similarity = cosine_similarity([item_embeddings[i]], [item_embeddings[j]])[0][0]\n            diversity_score += 1 - similarity  # Dissimilarity is 1 - similarity\n            num_pairs += 1\n    \n    if num_pairs > 0:\n        diversity_score /= num_pairs\n    \n    return diversity_score\n    \ndef calculate_click_through_rate(clicked_items, recommended_items):\n    clicked_recommended_items = clicked_items.intersection(recommended_items)\n    ctr = len(clicked_recommended_items) / len(recommended_items) if recommended_items else 0\n    return ctr","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:39.380001Z","iopub.execute_input":"2023-08-20T11:24:39.380582Z","iopub.status.idle":"2023-08-20T11:24:39.392765Z","shell.execute_reply.started":"2023-08-20T11:24:39.380548Z","shell.execute_reply":"2023-08-20T11:24:39.391574Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Assuming user_id is mapped to customer_id and you have user interactions data\nuser_id = 21\nuser_interactions = set(GraphTravel_HM[GraphTravel_HM['customer_id'] == user_id]['article_id'])\n# recommended_items=[480093001,156231001,796210001,822237001,806388002,806388001,507909024,678707005,720125001,507909003]\nrecommended_items = set(recommended_items)\n","metadata":{"execution":{"iopub.status.busy":"2023-08-19T15:32:12.477518Z","iopub.execute_input":"2023-08-19T15:32:12.478662Z","iopub.status.idle":"2023-08-19T15:32:12.485432Z","shell.execute_reply.started":"2023-08-19T15:32:12.478614Z","shell.execute_reply":"2023-08-19T15:32:12.484566Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"clicked_items = user_interactions.copy()\nprecision, recall = calculate_precision_recall(user_interactions, recommended_items)\nnovelty = calculate_novelty(recommended_items, user_interactions)\nctr = calculate_click_through_rate(clicked_items, recommended_items)\n\nprint(f\"Precision: {precision:.2f}\")\nprint(f\"Recall: {recall:.2f}\")\nprint(f\"Novelty: {novelty:.2f}\")\nprint(f\"Click-Through Rate: {ctr:.2f}\")\n","metadata":{"execution":{"iopub.status.busy":"2023-08-19T15:32:12.663173Z","iopub.execute_input":"2023-08-19T15:32:12.663484Z","iopub.status.idle":"2023-08-19T15:32:12.670697Z","shell.execute_reply.started":"2023-08-19T15:32:12.663458Z","shell.execute_reply":"2023-08-19T15:32:12.669763Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def show_images(items, item_name_mapping, num_items, show_similarity=False):\n    lst_items = []\n    for i, item in enumerate(items):\n        item_id, similarity = item\n        lst_items.append(item)\n    return lst_items","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:39.394804Z","iopub.execute_input":"2023-08-20T11:24:39.395554Z","iopub.status.idle":"2023-08-20T11:24:39.409494Z","shell.execute_reply.started":"2023-08-20T11:24:39.395519Z","shell.execute_reply":"2023-08-20T11:24:39.408842Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def categorical_recommend_items(user_id, df, embeddings, item_name_mapping, num_items):\n    rated_items = get_rated_items(user_id, df)\n    \n#     print(f\"User {user_id} has purchased:\")\n    show_images([(item_id, 0) for item_id in list(rated_items)[:5]], item_name_mapping, min(len(rated_items), 5))\n    \n    item_similarities = calculate_similarities(user_id, df, embeddings)\n    recommended_items = sorted(item_similarities, key=lambda x: x[1], reverse=True)[:num_items]\n\n#     print(f\"\\nRecommended items for user {user_id}:\")\n    return show_images(recommended_items, item_name_mapping, num_items, show_similarity=True)","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:39.412047Z","iopub.execute_input":"2023-08-20T11:24:39.412723Z","iopub.status.idle":"2023-08-20T11:24:39.420867Z","shell.execute_reply.started":"2023-08-20T11:24:39.412689Z","shell.execute_reply":"2023-08-20T11:24:39.420234Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"lst_recommendation = categorical_recommend_items(21, GraphTravel_HM, embeddings, item_name_mapping, num_items=10)\nlst_recommendation","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:39.42229Z","iopub.execute_input":"2023-08-20T11:24:39.423077Z","iopub.status.idle":"2023-08-20T11:24:39.731424Z","shell.execute_reply.started":"2023-08-20T11:24:39.423021Z","shell.execute_reply":"2023-08-20T11:24:39.730371Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"lst_items = []\nfor article_id,probability in lst_recommendation:\n    prod_name = articles[articles['article_id']==article_id]['prod_name'].values[0]\n    prod_category = articles[articles['article_id']==article_id]['product_group_name'].values[0]\n    lst_items.append({\n                   'article_id':article_id,\n                   'prod_name':prod_name,\n                   'product_group_name':prod_category,\n                   'probability':probability\n    })\n    \n","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:39.732834Z","iopub.execute_input":"2023-08-20T11:24:39.733234Z","iopub.status.idle":"2023-08-20T11:24:39.77694Z","shell.execute_reply.started":"2023-08-20T11:24:39.733194Z","shell.execute_reply":"2023-08-20T11:24:39.775943Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"lst_items","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:39.778334Z","iopub.execute_input":"2023-08-20T11:24:39.778716Z","iopub.status.idle":"2023-08-20T11:24:39.788146Z","shell.execute_reply.started":"2023-08-20T11:24:39.778683Z","shell.execute_reply":"2023-08-20T11:24:39.786875Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"articles['product_group_name'].unique()","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:39.78995Z","iopub.execute_input":"2023-08-20T11:24:39.790762Z","iopub.status.idle":"2023-08-20T11:24:39.810458Z","shell.execute_reply.started":"2023-08-20T11:24:39.790729Z","shell.execute_reply":"2023-08-20T11:24:39.809421Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"articles.columns","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:39.816581Z","iopub.execute_input":"2023-08-20T11:24:39.81695Z","iopub.status.idle":"2023-08-20T11:24:39.824449Z","shell.execute_reply.started":"2023-08-20T11:24:39.816915Z","shell.execute_reply":"2023-08-20T11:24:39.823421Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"articles[articles['article_id']==156231001][['prod_name','product_group_name']]","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:39.825414Z","iopub.execute_input":"2023-08-20T11:24:39.826537Z","iopub.status.idle":"2023-08-20T11:24:39.840776Z","shell.execute_reply.started":"2023-08-20T11:24:39.826504Z","shell.execute_reply":"2023-08-20T11:24:39.839604Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"articles[articles['article_id']==156231001]['product_group_name'].values[0]","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:39.842411Z","iopub.execute_input":"2023-08-20T11:24:39.842938Z","iopub.status.idle":"2023-08-20T11:24:39.851383Z","shell.execute_reply.started":"2023-08-20T11:24:39.842899Z","shell.execute_reply":"2023-08-20T11:24:39.850233Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.metrics.pairwise import cosine_similarity\n\ndef calculate_diversity(recommended_items, embeddings):\n    item_ids = list(recommended_items)\n    item_embeddings = [embeddings[str(item_id)] for item_id in item_ids]\n    \n    total_distance = 0.0\n    num_pairs = 0\n\n    for i in range(len(item_ids)):\n        for j in range(i + 1, len(item_ids)):\n            similarity = cosine_similarity([item_embeddings[i]], [item_embeddings[j]])[0][0]\n            distance = 1 - similarity  # Dissimilarity is 1 - similarity\n            total_distance += distance\n            num_pairs += 1\n    \n    if num_pairs > 0:\n        average_distance = total_distance / num_pairs\n        diversity_score = 1 - average_distance  # Convert back to similarity\n    else:\n        diversity_score = 0.0\n    \n    return diversity_score","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:24:39.852789Z","iopub.execute_input":"2023-08-20T11:24:39.854331Z","iopub.status.idle":"2023-08-20T11:24:39.864829Z","shell.execute_reply.started":"2023-08-20T11:24:39.854301Z","shell.execute_reply":"2023-08-20T11:24:39.863596Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"user_interactions = set(GraphTravel_HM[GraphTravel_HM['customer_id'] == 21]['article_id'])\nlst_recommendation = categorical_recommend_items(21, GraphTravel_HM, embeddings, item_name_mapping, num_items=10)\nlst_items =[]\nfor i in lst_recommendation:\n    lst_items.append(i[0])\nrecommended_items = set(lst_items)\ndiversity_score = calculate_diversity(recommended_items, embeddings)\nprint(f\"Diversity Score: {diversity_score:.2f}\")","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:27:17.918211Z","iopub.execute_input":"2023-08-20T11:27:17.918602Z","iopub.status.idle":"2023-08-20T11:27:18.222091Z","shell.execute_reply.started":"2023-08-20T11:27:17.918571Z","shell.execute_reply":"2023-08-20T11:27:18.220396Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"diversity = []\nfor i in range(1,1013):\n    user_id = i\n    user_interactions = set(GraphTravel_HM[GraphTravel_HM['customer_id'] == user_id]['article_id'])\n    recommended_items = []\n    for article_id,prob in lst:\n        if prob>=0.5:\n            recommended_items.append(article_id)\n    recommended_items = set(recommended_items)\n    diversity_score = calculate_diversity(recommended_items, embeddings)\n    diversity.append(diversity_score)\n    print(f\"Diversity Score: {diversity_score:.2f}\")","metadata":{"execution":{"iopub.status.busy":"2023-08-19T16:26:08.60268Z","iopub.execute_input":"2023-08-19T16:26:08.603061Z","iopub.status.idle":"2023-08-19T16:26:08.609448Z","shell.execute_reply.started":"2023-08-19T16:26:08.603031Z","shell.execute_reply":"2023-08-19T16:26:08.608397Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"lst_category = [{'article_id': 108775015, 'product_code': 108775, 'product_name': 'Strap top', 'Probability': 0.28138357400894165}, {'article_id': 108775044, 'product_code': 108775, 'product_name': 'Strap top', 'Probability': 0.206508606672287}, {'article_id': 316441001, 'product_code': 316441, 'product_name': 'Lee (1)', 'Probability': 0.272492915391922}, {'article_id': 337777001, 'product_code': 337777, 'product_name': 'Easy iron L/S shirt  TP', 'Probability': 0.18093529343605042}, {'article_id': 355072001, 'product_code': 355072, 'product_name': 'Anita Tank (1)', 'Probability': 0.20991405844688416}, {'article_id': 355072002, 'product_code': 355072, 'product_name': 'Anita Tank (1)', 'Probability': 0.17380882799625397}, {'article_id': 355569001, 'product_code': 355569, 'product_name': 'Nicky Long', 'Probability': 0.23465612530708313}, {'article_id': 355569002, 'product_code': 355569, 'product_name': 'Nicky Long', 'Probability': 0.33962857723236084}, {'article_id': 377277002, 'product_code': 377277, 'product_name': 'Svea Cropped Tank', 'Probability': 0.1962246596813202}, {'article_id': 380193006, 'product_code': 380193, 'product_name': 'Cameron Cut Off', 'Probability': 0.2799016833305359}, {'article_id': 403448007, 'product_code': 403448, 'product_name': 'GREG 2-p tanktop BB', 'Probability': 0.30334270000457764}, {'article_id': 403448008, 'product_code': 403448, 'product_name': 'GREG tanktop BB 2-p', 'Probability': 0.29885411262512207}, {'article_id': 403448010, 'product_code': 403448, 'product_name': 'GREG tanktop BB 2-p', 'Probability': 0.30762264132499695}, {'article_id': 403490012, 'product_code': 403490, 'product_name': 'ELIAS basic V-neck BB 2-p', 'Probability': 0.30659759044647217}, {'article_id': 408875001, 'product_code': 408875, 'product_name': 'Goldie tank top', 'Probability': 0.24452699720859528}, {'article_id': 437150001, 'product_code': 437150, 'product_name': 'Waterfall Winter coat', 'Probability': 0.14740049839019775}, {'article_id': 443262014, 'product_code': 443262, 'product_name': 'Frank Tank', 'Probability': 0.1914130598306656}, {'article_id': 443696021, 'product_code': 443696, 'product_name': 'BO basic OH BB', 'Probability': 0.2825707793235779}, {'article_id': 448262044, 'product_code': 448262, 'product_name': 'Roll up tee (1)', 'Probability': 0.31777724623680115}, {'article_id': 449263003, 'product_code': 449263, 'product_name': 'Zero Tee', 'Probability': 0.5690484046936035}, {'article_id': 449263023, 'product_code': 449263, 'product_name': 'Zero Tee', 'Probability': 0.30875611305236816}, {'article_id': 456163050, 'product_code': 456163, 'product_name': 'Woody', 'Probability': 0.11405548453330994}, {'article_id': 498061004, 'product_code': 498061, 'product_name': 'Memmel t-shirt', 'Probability': 0.18280313909053802}, {'article_id': 501616007, 'product_code': 501616, 'product_name': 'FRAME Easy Iron', 'Probability': 0.3648339807987213}, {'article_id': 501616009, 'product_code': 501616, 'product_name': 'FRAME Easy Iron', 'Probability': 0.37376177310943604}, {'article_id': 501620016, 'product_code': 501620, 'product_name': 'BORIS', 'Probability': 0.25258296728134155}, {'article_id': 507909001, 'product_code': 507909, 'product_name': 'Rebecca or Delphine shirt', 'Probability': 0.21390491724014282}, {'article_id': 507909003, 'product_code': 507909, 'product_name': 'Rebecca or Delphine shirt', 'Probability': 0.14898593723773956}, {'article_id': 507909024, 'product_code': 507909, 'product_name': 'Rebecca', 'Probability': 0.1584181934595108}, {'article_id': 507910004, 'product_code': 507910, 'product_name': 'Isabella', 'Probability': 0.10496295988559723}, {'article_id': 514179003, 'product_code': 514179, 'product_name': 'Rob Tee', 'Probability': 0.322065532207489}, {'article_id': 515991012, 'product_code': 515991, 'product_name': 'Ulla LS', 'Probability': 0.5593911409378052}, {'article_id': 516000001, 'product_code': 516000, 'product_name': 'Agnes LS R-neck', 'Probability': 0.35472506284713745}, {'article_id': 516000044, 'product_code': 516000, 'product_name': 'Agnes LS R-neck', 'Probability': 0.568547248840332}, {'article_id': 516000075, 'product_code': 516000, 'product_name': 'Agnes LS R-neck', 'Probability': 0.1856071949005127}, {'article_id': 525821001, 'product_code': 525821, 'product_name': 'R-NECK SS SLIM FIT', 'Probability': 0.29455649852752686}, {'article_id': 532578010, 'product_code': 532578, 'product_name': 'Annette', 'Probability': 0.276327908039093}, {'article_id': 534210006, 'product_code': 534210, 'product_name': 'Austin', 'Probability': 0.28051701188087463}, {'article_id': 535388008, 'product_code': 535388, 'product_name': 'Cotton eye shirt or Manhattan', 'Probability': 0.5016204118728638}, {'article_id': 537116001, 'product_code': 537116, 'product_name': 'Tara turtleneck top', 'Probability': 0.3162901699542999}, {'article_id': 537116012, 'product_code': 537116, 'product_name': 'Tara turtleneck top', 'Probability': 0.1462964415550232}, {'article_id': 542533001, 'product_code': 542533, 'product_name': 'VICTOR 3PK SLIM VN T-SHIRT', 'Probability': 0.19495737552642822}, {'article_id': 544116002, 'product_code': 544116, 'product_name': 'Hunni', 'Probability': 0.24891513586044312}, {'article_id': 554598001, 'product_code': 554598, 'product_name': 'Nora T-shirt', 'Probability': 0.06272227317094803}, {'article_id': 554598003, 'product_code': 554598, 'product_name': 'Nora T-shirt', 'Probability': 0.24266491830348969}, {'article_id': 554598040, 'product_code': 554598, 'product_name': 'Nora T-shirt', 'Probability': 0.09863601624965668}, {'article_id': 554598080, 'product_code': 554598, 'product_name': 'Nora T-shirt', 'Probability': 0.34210148453712463}, {'article_id': 554772002, 'product_code': 554772, 'product_name': 'Bob V-neck', 'Probability': 0.0837944746017456}, {'article_id': 554772003, 'product_code': 554772, 'product_name': 'Bob V-neck', 'Probability': 0.06388184428215027}, {'article_id': 557246002, 'product_code': 557246, 'product_name': 'Hood W Zip', 'Probability': 0.42009323835372925}, {'article_id': 557247005, 'product_code': 557247, 'product_name': 'Petar Sweater(1)', 'Probability': 0.22226780652999878}, {'article_id': 557248001, 'product_code': 557248, 'product_name': 'Richie Regular Hood', 'Probability': 0.25106167793273926}, {'article_id': 557248005, 'product_code': 557248, 'product_name': 'Richie Regular Hood', 'Probability': 0.4538406729698181}, {'article_id': 557908022, 'product_code': 557908, 'product_name': 'Frame Slim SS', 'Probability': 0.2802264392375946}, {'article_id': 561445005, 'product_code': 561445, 'product_name': 'Billie', 'Probability': 0.2704610228538513}, {'article_id': 561445006, 'product_code': 561445, 'product_name': 'Billie', 'Probability': 0.39055734872817993}, {'article_id': 563519001, 'product_code': 563519, 'product_name': 'Simba', 'Probability': 0.36989539861679077}, {'article_id': 565036003, 'product_code': 565036, 'product_name': 'Noah hood', 'Probability': 0.30209967494010925}, {'article_id': 565379001, 'product_code': 565379, 'product_name': 'Moa tank', 'Probability': 0.2905069589614868}, {'article_id': 565379002, 'product_code': 565379, 'product_name': 'Moa tank', 'Probability': 0.42756855487823486}, {'article_id': 569984001, 'product_code': 569984, 'product_name': 'REX SLIM LS T-SHIRT', 'Probability': 0.19923138618469238}, {'article_id': 569984002, 'product_code': 569984, 'product_name': 'REX SLIM LS T-SHIRT', 'Probability': 0.4227887988090515}, {'article_id': 569996001, 'product_code': 569996, 'product_name': 'R-NECK SS BASIC FIT', 'Probability': 0.3481809198856354}, {'article_id': 569997012, 'product_code': 569997, 'product_name': 'R-NECK BASIC FIT FANCY', 'Probability': 0.2850886881351471}, {'article_id': 570002001, 'product_code': 570002, 'product_name': 'ROY SLIM RN T-SHIRT', 'Probability': 0.20719589293003082}, {'article_id': 570002002, 'product_code': 570002, 'product_name': 'ROY SLIM RN T-SHIRT', 'Probability': 0.22514699399471283}, {'article_id': 570003001, 'product_code': 570003, 'product_name': 'VICTOR SLIM VN T-SHIRT', 'Probability': 0.3797820210456848}, {'article_id': 570003002, 'product_code': 570003, 'product_name': 'VICTOR SLIM VN T-SHIRT', 'Probability': 0.4369542598724365}, {'article_id': 570004009, 'product_code': 570004, 'product_name': 'PETER POLO', 'Probability': 0.2924998998641968}, {'article_id': 570033002, 'product_code': 570033, 'product_name': 'ERIK REG TANK TOP', 'Probability': 0.2063070684671402}, {'article_id': 572797001, 'product_code': 572797, 'product_name': 'ESSENTIAL TANKTOP LACE TVP', 'Probability': 0.3407667875289917}, {'article_id': 572797002, 'product_code': 572797, 'product_name': 'ESSENTIAL TANKTOP LACE TVP', 'Probability': 0.31773656606674194}, {'article_id': 573282010, 'product_code': 573282, 'product_name': 'ANNA SLUB', 'Probability': 0.5116715431213379}, {'article_id': 573282012, 'product_code': 573282, 'product_name': 'ANNA SLUB', 'Probability': 0.5352064371109009}, {'article_id': 573701001, 'product_code': 573701, 'product_name': 'Luna tunic', 'Probability': 0.24820449948310852}, {'article_id': 576897002, 'product_code': 576897, 'product_name': 'Olga off shoulder', 'Probability': 0.32806792855262756}, {'article_id': 579541001, 'product_code': 579541, 'product_name': 'Calista cardigan.', 'Probability': 0.20747211575508118}, {'article_id': 589662003, 'product_code': 589662, 'product_name': 'DON Tee', 'Probability': 0.1846943199634552}, {'article_id': 589924010, 'product_code': 589924, 'product_name': 'Nord tee', 'Probability': 0.015539847314357758}, {'article_id': 591334003, 'product_code': 591334, 'product_name': 'Flock (1)', 'Probability': 0.263865202665329}, {'article_id': 591334014, 'product_code': 591334, 'product_name': 'Flock', 'Probability': 0.4601508378982544}, {'article_id': 593829002, 'product_code': 593829, 'product_name': 'Ronny R-Neck (1)', 'Probability': 0.2608499526977539}, {'article_id': 593829031, 'product_code': 593829, 'product_name': 'Ronny R-Neck (1)', 'Probability': 0.3546297550201416}, \n {'article_id': 596119001, 'product_code': 596119, 'product_name': 'Cash', 'Probability': 0.5200905799865723}, {'article_id': 598755001, 'product_code': 598755, 'product_name': 'TAZ LONG RN T-SHIRT', 'Probability': 0.6132611632347107}, {'article_id': 598755002, 'product_code': 598755, 'product_name': 'TAZ LONG RN T-SHIRT', 'Probability': 0.5868926048278809}, {'article_id': 598755031, 'product_code': 598755, 'product_name': 'Taz Tee', 'Probability': 0.2944200336933136}, {'article_id': 598811010, 'product_code': 598811, 'product_name': 'Dingo tank', 'Probability': 0.09206320345401764}, {'article_id': 598811011, 'product_code': 598811, 'product_name': 'Dingo tank', 'Probability': 0.3378888964653015}, {'article_id': 600229001, 'product_code': 600229, 'product_name': 'CAGE SLIM EASY IRON US', 'Probability': 0.22953927516937256}, {'article_id': 607642009, 'product_code': 607642, 'product_name': 'The Firm (1)', 'Probability': 0.2407941371202469}, {'article_id': 608945001, 'product_code': 608945, 'product_name': 'ISAAC RXD RN T-SHIRT', 'Probability': 0.17842096090316772}, {'article_id': 609146002, 'product_code': 609146, 'product_name': 'LARRY LS HENLEY', 'Probability': 0.0420934334397316}, {'article_id': 610776001, 'product_code': 610776, 'product_name': 'Tilly (1)', 'Probability': 0.419208288192749}, {'article_id': 610776002, 'product_code': 610776, 'product_name': 'Tilly (1)', 'Probability': 0.4594733715057373}, {'article_id': 610776040, 'product_code': 610776, 'product_name': 'Tilly', 'Probability': 0.20095404982566833}, {'article_id': 610776041, 'product_code': 610776, 'product_name': 'Tilly (1)', 'Probability': 0.25772759318351746}, {'article_id': 610776107, 'product_code': 610776, 'product_name': 'Tilly (1)', 'Probability': 0.33996063470840454}, {'article_id': 611024002, 'product_code': 611024, 'product_name': 'Frugan.', 'Probability': 0.4357026219367981}, {'article_id': 611503001, 'product_code': 611503, 'product_name': 'Bertil s/s SB', 'Probability': 0.3515639901161194}, {'article_id': 615021029, 'product_code': 615021, 'product_name': 'Luisa tee', 'Probability': 0.2619876265525818}, {'article_id': 617725001, 'product_code': 617725, 'product_name': 'DIV Tess tee (1)', 'Probability': 0.2257126122713089}, {'article_id': 617736002, 'product_code': 617736, 'product_name': 'DIV Nora cardigan', 'Probability': 0.22522547841072083}, {'article_id': 620083005, 'product_code': 620083, 'product_name': 'All in sweater', 'Probability': 0.05236012488603592}, {'article_id': 622162002, 'product_code': 622162, 'product_name': 'Cannes', 'Probability': 0.34774649143218994}, {'article_id': 623012010, 'product_code': 623012, 'product_name': 'TP Hunter shirt', 'Probability': 0.14335092902183533}, {'article_id': 623317001, 'product_code': 623317, 'product_name': 'Helsingborg', 'Probability': 0.3703501224517822}, {'article_id': 624761001, 'product_code': 624761, 'product_name': 'KIM cardigan (Pim qlty)', 'Probability': 0.2963543236255646}, {'article_id': 624761002, 'product_code': 624761, 'product_name': 'KIM cardigan (Pim qlty)', 'Probability': 0.27484285831451416}, {'article_id': 625819007, 'product_code': 625819, 'product_name': 'J shirt', 'Probability': 0.39259618520736694}, {'article_id': 627197003, 'product_code': 627197, 'product_name': 'Gaby Blouse', 'Probability': 0.16974711418151855}, {'article_id': 628425001, 'product_code': 628425, 'product_name': 'Helena Tank 2PACK', 'Probability': 0.5463409423828125}, {'article_id': 628979001, 'product_code': 628979, 'product_name': 'Neo jumper', 'Probability': 0.41166093945503235}, {'article_id': 629420001, 'product_code': 629420, 'product_name': 'claudine', 'Probability': 0.07684268057346344}, {'article_id': 629420002, 'product_code': 629420, 'product_name': 'claudine', 'Probability': 0.3962394595146179}, {'article_id': 633808016, 'product_code': 633808, 'product_name': 'Terrier tee TOP PRODUCT', 'Probability': 0.38246265053749084}, {'article_id': 633825003, 'product_code': 633825, 'product_name': 'Julius blouse', 'Probability': 0.20034420490264893}, {'article_id': 634775006, 'product_code': 634775, 'product_name': 'Canna LS', 'Probability': 0.29982292652130127}, {'article_id': 636587012, 'product_code': 636587, 'product_name': 'Ronny R-Neck', 'Probability': 0.2648942172527313}, {'article_id': 637940005, 'product_code': 637940, 'product_name': 'Mary Coat', 'Probability': 0.1005474403500557}, {'article_id': 639192002, 'product_code': 639192, 'product_name': 'Capri blazer', 'Probability': 0.28703778982162476}, {'article_id': 639273001, 'product_code': 639273, 'product_name': 'CSP Nala wrap', 'Probability': 0.2898610830307007}, {'article_id': 639670002, 'product_code': 639670, 'product_name': 'Praline', 'Probability': 0.20090517401695251}, {'article_id': 640251009, 'product_code': 640251, 'product_name': 'Granda tank', 'Probability': 0.1271665245294571}, {'article_id': 644073002, 'product_code': 644073, 'product_name': 'Lucy blouse update', 'Probability': 0.11887170374393463}, {'article_id': 648627001, 'product_code': 648627, 'product_name': 'RONDA LACE', 'Probability': 0.19385913014411926}, {'article_id': 649098002, 'product_code': 649098, 'product_name': 'ERIK 2PK REG TANK TOP', 'Probability': 0.20033253729343414}, {'article_id': 649098003, 'product_code': 649098, 'product_name': 'ERIK 2PK REG TANK TOP', 'Probability': 0.2012917697429657}, {'article_id': 651905005, 'product_code': 651905, 'product_name': 'Ryder tee', 'Probability': 0.22548669576644897}, {'article_id': 653208001, 'product_code': 653208, 'product_name': 'ED Johnny top', 'Probability': 0.38540494441986084}, {'article_id': 653275005, 'product_code': 653275, 'product_name': 'Correy Muscle Fit Tee', 'Probability': 0.10375570505857468}, {'article_id': 653275006, 'product_code': 653275, 'product_name': 'Correy tee.', 'Probability': 0.2914675772190094}, {'article_id': 653577001, 'product_code': 653577, 'product_name': 'Cannes', 'Probability': 0.2911359667778015}, {'article_id': 657283002, 'product_code': 657283, 'product_name': 'LS TANGA TWIST', 'Probability': 0.44925469160079956}, {'article_id': 657283008, 'product_code': 657283, 'product_name': 'LS TANGA TWIST', 'Probability': 0.3880974054336548}, {'article_id': 658183001, 'product_code': 658183, 'product_name': 'BOOGIE hooded tee', 'Probability': 0.4402008652687073}, {'article_id': 659323001, 'product_code': 659323, 'product_name': 'LF Tulipe Tee', 'Probability': 0.11433259397745132}, {'article_id': 659459003, 'product_code': 659459, 'product_name': 'Dundee', 'Probability': 0.18513256311416626}, {'article_id': 662075005, 'product_code': 662075, 'product_name': 'Nikki', 'Probability': 0.1648833453655243}, {'article_id': 662344015, 'product_code': 662344, 'product_name': 'Lily blouse', 'Probability': 0.06022863835096359}, {'article_id': 667499018, 'product_code': 667499, 'product_name': 'Despacito', 'Probability': 0.385567843914032}, {'article_id': 668537001, 'product_code': 668537, 'product_name': 'Doutzen', 'Probability': 0.28802573680877686}, {'article_id': 669091021, 'product_code': 669091, 'product_name': 'ROBIN HOOD.', 'Probability': 0.2536200284957886}, {'article_id': 669713001, 'product_code': 669713, 'product_name': 'Zingo sweater', 'Probability': 0.3434368073940277}, {'article_id': 669874002, 'product_code': 669874, 'product_name': 'Sasha lace off shoulder', 'Probability': 0.2934846878051758}, {'article_id': 670435001, 'product_code': 670435, 'product_name': 'Billie', 'Probability': 0.3692672848701477}, {'article_id': 670435008, 'product_code': 670435, 'product_name': 'Billie', 'Probability': 0.3753397464752197}, {'article_id': 672598002, 'product_code': 672598, 'product_name': 'Nero', 'Probability': 0.01891237497329712}, {'article_id': 673285001, 'product_code': 673285, 'product_name': 'TRACEY LONG SLEEVE', 'Probability': 0.3788069784641266}, {'article_id': 673677002, 'product_code': 673677, 'product_name': 'Henry polo. (1)', 'Probability': 0.19742362201213837}, {'article_id': 675068002, 'product_code': 675068, 'product_name': 'Melrose', 'Probability': 0.2879284620285034}, {'article_id': 675070002, 'product_code': 675070, 'product_name': 'Blueberry', 'Probability': 0.20172956585884094}, {'article_id': 675139006, 'product_code': 675139, 'product_name': 'Olivia', 'Probability': 0.29322895407676697}, {'article_id': 677930031, 'product_code': 677930, 'product_name': 'Queen Sweater', 'Probability': 0.4861339330673218}, {'article_id': 678321003, 'product_code': 678321, 'product_name': 'HEDDA Tank - SPEED', 'Probability': 0.4395787715911865}, {'article_id': 678342001, 'product_code': 678342, 'product_name': 'Lima SS.', 'Probability': 0.1918465942144394}, {'article_id': 678689001, 'product_code': 678689, 'product_name': 'LEO SEAMLESS TEE', 'Probability': 0.34839069843292236}, {'article_id': 678694001, 'product_code': 678694, 'product_name': 'SPEEDY TEE', 'Probability': 0.35005056858062744}, {'article_id': 678696001, 'product_code': 678696, 'product_name': 'IZZY TEE', 'Probability': 0.18049895763397217}, {'article_id': 678707005, 'product_code': 678707, 'product_name': 'VALENTINE LONGSLEEVE', 'Probability': 0.11162901669740677}, {'article_id': 678942001, 'product_code': 678942, 'product_name': 'Harrison short sleeve top CN', 'Probability': 0.19549334049224854}, {'article_id': 678942032, 'product_code': 678942, 'product_name': 'Harrison (1)', 'Probability': 0.17918121814727783}, {'article_id': 679853020, 'product_code': 679853, 'product_name': 'Sirpa Basic TVP', 'Probability': 0.22134041786193848}, {'article_id': 679854001, 'product_code': 679854, 'product_name': 'Maja Cardigan TVP', 'Probability': 0.2429724931716919}, {'article_id': 679854003, 'product_code': 679854, 'product_name': 'Maja Cardigan TVP', 'Probability': 0.24308991432189941}, {'article_id': 680374002, 'product_code': 680374, 'product_name': 'Lively X', 'Probability': 0.3399658799171448}, {'article_id': 680846004, 'product_code': 680846, 'product_name': 'W LUKE OL OFFER', 'Probability': 0.49378329515457153},\n {'article_id': 681319002, 'product_code': 681319, 'product_name': 'Moa long (1)', 'Probability': 0.11521072685718536}, {'article_id': 682550001, 'product_code': 682550, 'product_name': 'Uno Hood (1)', 'Probability': 0.06538859009742737}, {'article_id': 684193004, 'product_code': 684193, 'product_name': 'Flora top', 'Probability': 0.18897610902786255}, {'article_id': 685689001, 'product_code': 685689, 'product_name': 'W FELICITY OL OFFER', 'Probability': 0.30312854051589966}, {'article_id': 685689002, 'product_code': 685689, 'product_name': 'W FELICITY OL OFFER', 'Probability': 0.29938948154449463}, {'article_id': 685813001, 'product_code': 685813, 'product_name': 'PETAR SWEATSHIRT', 'Probability': 0.22678282856941223}, {'article_id': 685813004, 'product_code': 685813, 'product_name': 'Petar Sweater', 'Probability': 0.21899354457855225}, {'article_id': 685813005, 'product_code': 685813, 'product_name': 'PETAR SWEATSHIRT', 'Probability': 0.19804826378822327}, {'article_id': 685813006, 'product_code': 685813, 'product_name': 'PETAR SWEATSHIRT', 'Probability': 0.20300062000751495}, {'article_id': 685814001, 'product_code': 685814, 'product_name': 'RICHIE HOOD', 'Probability': 0.3455888032913208}, {'article_id': 685814003, 'product_code': 685814, 'product_name': 'RICHIE HOOD', 'Probability': 0.07525865733623505}, {'article_id': 685814005, 'product_code': 685814, 'product_name': 'RICHIE HOOD', 'Probability': 0.38982710242271423}, {'article_id': 685814006, 'product_code': 685814, 'product_name': 'RICHIE HOOD', 'Probability': 0.01343342661857605}, {'article_id': 685814048, 'product_code': 685814, 'product_name': 'RICHIE HOOD', 'Probability': 0.378678560256958}, {'article_id': 685816001, 'product_code': 685816, 'product_name': 'RONNY REG RN T-SHIRT', 'Probability': 0.1761428862810135}, {'article_id': 685816002, 'product_code': 685816, 'product_name': 'RONNY REG RN T-SHIRT', 'Probability': 0.31493356823921204}, {'article_id': 685816004, 'product_code': 685816, 'product_name': 'RONNY R-NECK', 'Probability': 0.18486516177654266}, {'article_id': 685816005, 'product_code': 685816, 'product_name': 'RONNY R-NECK', 'Probability': 0.2316233217716217}, {'article_id': 685816017, 'product_code': 685816, 'product_name': 'RONNY R-NECK', 'Probability': 0.39169275760650635}, {'article_id': 685816039, 'product_code': 685816, 'product_name': 'RONNY R-NECK', 'Probability': 0.11536981910467148}, {'article_id': 685816046, 'product_code': 685816, 'product_name': 'RONNY R-NECK', 'Probability': 0.23761266469955444}, {'article_id': 686496004, 'product_code': 686496, 'product_name': 'ASTRID PJ SHIRT', 'Probability': 0.034999601542949677}, {'article_id': 687036009, 'product_code': 687036, 'product_name': 'AGNES isw 45', 'Probability': 0.23365482687950134}, {'article_id': 687601004, 'product_code': 687601, 'product_name': 'PRICE CREW', 'Probability': 0.1270160973072052}, {'article_id': 687753001, 'product_code': 687753, 'product_name': 'DIV Nicky long tank top', 'Probability': 0.402355819940567}, {'article_id': 688873001, 'product_code': 688873, 'product_name': 'Gyda!', 'Probability': 0.03333573043346405}, {'article_id': 688873002, 'product_code': 688873, 'product_name': 'Gyda!', 'Probability': 0.4141066074371338}, {'article_id': 688873003, 'product_code': 688873, 'product_name': 'Gyda!', 'Probability': 0.28976213932037354}, {'article_id': 688873007, 'product_code': 688873, 'product_name': 'Gyda!', 'Probability': 0.26760023832321167}, {'article_id': 689365043, 'product_code': 689365, 'product_name': 'BROADWAY SHIRT S.1', 'Probability': 0.15418855845928192}, {'article_id': 689365045, 'product_code': 689365, 'product_name': 'BROADWAY SHIRT S.1', 'Probability': 0.24383579194545746}, {'article_id': 689389048, 'product_code': 689389, 'product_name': 'DENISE SHIRT S.1', 'Probability': 0.21155984699726105}, {'article_id': 691149002, 'product_code': 691149, 'product_name': 'SC AVA sweatshirt', 'Probability': 0.34016847610473633}, {'article_id': 692226003, 'product_code': 692226, 'product_name': 'Anita Tank', 'Probability': 0.3834896683692932}, {'article_id': 692226004, 'product_code': 692226, 'product_name': 'Anita Tank', 'Probability': 0.21838191151618958}, {'article_id': 694127001, 'product_code': 694127, 'product_name': 'MARLEY BLOUSE', 'Probability': -0.1344321370124817}, {'article_id': 694153008, 'product_code': 694153, 'product_name': 'Joe top', 'Probability': 0.39565956592559814}, {'article_id': 695324011, 'product_code': 695324, 'product_name': 'Luke checked shirt', 'Probability': 0.2902017831802368}, {'article_id': 695324015, 'product_code': 695324, 'product_name': 'Luke checked shirt', 'Probability': 0.26809489727020264}, {'article_id': 695632001, 'product_code': 695632, 'product_name': 'Gyda blouse', 'Probability': 0.28664880990982056}, {'article_id': 695632002, 'product_code': 695632, 'product_name': 'Gyda blouse', 'Probability': 0.2519965171813965}, {'article_id': 695632003, 'product_code': 695632, 'product_name': 'Gyda-', 'Probability': 0.2753189206123352}, {'article_id': 695632095, 'product_code': 695632, 'product_name': 'Gyda- (1)', 'Probability': 0.24277250468730927}, {'article_id': 695632113, 'product_code': 695632, 'product_name': 'Gyda blouse', 'Probability': 0.25288113951683044}, {'article_id': 696155002, 'product_code': 696155, 'product_name': 'INGRID BASIC HOOD', 'Probability': 0.5635555982589722}, {'article_id': 697054014, 'product_code': 697054, 'product_name': 'Despacito 1', 'Probability': 0.3813454210758209}, {'article_id': 697054015, 'product_code': 697054, 'product_name': 'Despacito', 'Probability': 0.25376096367836}, {'article_id': 697564010, 'product_code': 697564, 'product_name': 'KELLY SHIRT', 'Probability': 0.3783411979675293}, {'article_id': 698273005, 'product_code': 698273, 'product_name': 'BOULEVARD TEE TVP', 'Probability': 0.2695174217224121}, {'article_id': 698776002, 'product_code': 698776, 'product_name': 'James Biker', 'Probability': 0.11562980711460114}, {'article_id': 699924003, 'product_code': 699924, 'product_name': 'Fav polo', 'Probability': 0.34146973490715027}, {'article_id': 699924020, 'product_code': 699924, 'product_name': 'Fav polo', 'Probability': 0.33747243881225586}, {'article_id': 700931002, 'product_code': 700931, 'product_name': 'TANGA LS', 'Probability': 0.37642884254455566}, {'article_id': 700950001, 'product_code': 700950, 'product_name': 'CSP Shangela CF', 'Probability': 0.25093090534210205}, {'article_id': 700974001, 'product_code': 700974, 'product_name': 'Barley tee party', 'Probability': 0.22041481733322144}, {'article_id': 701016012, 'product_code': 701016, 'product_name': 'PRICE TEE', 'Probability': 0.27755868434906006}, {'article_id': 704770001, 'product_code': 704770, 'product_name': 'CSS PERLA loose tank', 'Probability': 0.2358093112707138}, {'article_id': 707147001, 'product_code': 707147, 'product_name': 'PINKY+', 'Probability': 0.36228448152542114}, {'article_id': 707717005, 'product_code': 707717, 'product_name': 'Django', 'Probability': 0.11826029419898987}, {'article_id': 707717006, 'product_code': 707717, 'product_name': 'Django', 'Probability': 0.07711494714021683}, {'article_id': 708230001, 'product_code': 708230, 'product_name': 'LINNI TEE', 'Probability': 0.3713017404079437}, {'article_id': 708285001, 'product_code': 708285, 'product_name': 'Fleet price hood', 'Probability': 0.27501344680786133}, {'article_id': 708352001, 'product_code': 708352, 'product_name': 'CSP Grace body', 'Probability': 0.40336427092552185}, {'article_id': 709418001, 'product_code': 709418, 'product_name': 'DIV Anni oversize hood', 'Probability': 0.2100786566734314}, {'article_id': 709673001, 'product_code': 709673, 'product_name': 'RAVEN halfzip ls', 'Probability': 0.22214198112487793}, {'article_id': 710554003, 'product_code': 710554, 'product_name': 'GOSSIP CONSCIOUS TANK TOP', 'Probability': 0.3540070652961731}, {'article_id': 710951001, 'product_code': 710951, 'product_name': 'PC Belinda Jumpsuit', 'Probability': 0.42245644330978394}, {'article_id': 711053003, 'product_code': 711053, 'product_name': 'Tess Tee.', 'Probability': 0.19493643939495087}, {'article_id': 711053004, 'product_code': 711053, 'product_name': 'Tess Tee.', 'Probability': 0.17070461809635162}, {'article_id': 712216001, 'product_code': 712216, 'product_name': 'Prima', 'Probability': 0.0500042662024498}, {'article_id': 712216005, 'product_code': 712216, 'product_name': 'Prima', 'Probability': 0.05158231034874916}, {'article_id': 712838008, 'product_code': 712838, 'product_name': 'Nira tee', 'Probability': 0.2411380261182785}, {'article_id': 716046001, 'product_code': 716046, 'product_name': 'Agave Coat', 'Probability': 0.02467387169599533}, {'article_id': 716672001, 'product_code': 716672, 'product_name': 'Jennifer Top', 'Probability': 0.0632062628865242}, {'article_id': 716672014, 'product_code': 716672, 'product_name': 'Jennifer Top', 'Probability': 0.17149972915649414}, {'article_id': 717464001, 'product_code': 717464, 'product_name': 'Nicky long.', 'Probability': 0.14051997661590576}, {'article_id': 717464002, 'product_code': 717464, 'product_name': 'Nicky long.', 'Probability': 0.2155894935131073}, {'article_id': 717464007, 'product_code': 717464, 'product_name': 'Nicky long.', 'Probability': 0.14374731481075287}, {'article_id': 717490002, 'product_code': 717490, 'product_name': 'Cat Tee.', 'Probability': 0.18292461335659027}, {'article_id': 717490006, 'product_code': 717490, 'product_name': 'Cat Tee.', 'Probability': 0.06566467881202698}, {'article_id': 717490010, 'product_code': 717490, 'product_name': 'Cat Tee.', 'Probability': 0.2508341073989868}, {'article_id': 717995002, 'product_code': 717995, 'product_name': 'ROLAND SET IN', 'Probability': 0.3080073893070221}, {'article_id': 718278001, 'product_code': 718278, 'product_name': 'Bird tee', 'Probability': 0.20971199870109558}, {'article_id': 718278002, 'product_code': 718278, 'product_name': 'Bird tee', 'Probability': 0.17015372216701508},\n {'article_id': 718289003, 'product_code': 718289, 'product_name': 'Cosette polo', 'Probability': 0.14344386756420135}, {'article_id': 719348002, 'product_code': 719348, 'product_name': 'Bellora(1)', 'Probability': 0.3471403121948242}, {'article_id': 721450001, 'product_code': 721450, 'product_name': 'Chore Jacket', 'Probability': 0.1451408565044403}, {'article_id': 722475005, 'product_code': 722475, 'product_name': 'FRAME Easy Iron TVP', 'Probability': 0.3338508605957031}, {'article_id': 724626005, 'product_code': 724626, 'product_name': 'Dayzy linen', 'Probability': 0.19096440076828003}, {'article_id': 725608001, 'product_code': 725608, 'product_name': 'PRICE ITEM PEPITA', 'Probability': 0.3473856747150421}, \n {'article_id': 726183002, 'product_code': 726183, 'product_name': 'J DUNHAM TOP EQ', 'Probability': 0.10939891636371613}, {'article_id': 728162001, 'product_code': 728162, 'product_name': 'Talia (1)', 'Probability': 0.2576347589492798}, {'article_id': 728162002, 'product_code': 728162, 'product_name': 'Talia (1)', 'Probability': 0.19686540961265564}, {'article_id': 730946001, 'product_code': 730946, 'product_name': 'Billie high', 'Probability': 0.05477750301361084}, {'article_id': 731608001, 'product_code': 731608, 'product_name': 'Brody V-neck', 'Probability': 0.3262423872947693}, {'article_id': 733782001, 'product_code': 733782, 'product_name': 'Sara tee', 'Probability': 0.10320588946342468}, {'article_id': 733957001, 'product_code': 733957, 'product_name': 'Bob 2-pack', 'Probability': 0.19057106971740723}, {'article_id': 735988001, 'product_code': 735988, 'product_name': 'LUNA tank', 'Probability': 0.1945841759443283}, {'article_id': 736870005, 'product_code': 736870, 'product_name': 'Strap Top 2 pack tank', 'Probability': 0.2740703821182251}, {'article_id': 737040003, 'product_code': 737040, 'product_name': 'SIGNE BOAT NECK', 'Probability': 0.3517926037311554}, {'article_id': 739348007, 'product_code': 739348, 'product_name': 'SPEEDY CONSCIOUS TEE', 'Probability': 0.4257015585899353}, {'article_id': 739529002, 'product_code': 739529, 'product_name': 'Bianca linen(1)', 'Probability': 0.15028418600559235}, {'article_id': 739974006, 'product_code': 739974, 'product_name': 'Bambi', 'Probability': 0.22876887023448944}, {'article_id': 740938001, 'product_code': 740938, 'product_name': 'Wanda', 'Probability': 0.28639841079711914}, {'article_id': 741215001, 'product_code': 741215, 'product_name': 'Jan tee', 'Probability': 0.26851972937583923}, {'article_id': 741985001, 'product_code': 741985, 'product_name': 'Stureby', 'Probability': 0.2220795899629593}, {'article_id': 741985005, 'product_code': 741985, 'product_name': 'Barry cardigan (1)', 'Probability': 0.21801364421844482}, {'article_id': 741985006, 'product_code': 741985, 'product_name': 'Barry cardigan (1)', 'Probability': 0.22378751635551453}, {'article_id': 742116001, 'product_code': 742116, 'product_name': 'SUNSHINE cropped seamless top', 'Probability': 0.11589350551366806}, {'article_id': 742359001, 'product_code': 742359, 'product_name': 'Tika', 'Probability': 0.24326924979686737}, {'article_id': 746687001, 'product_code': 746687, 'product_name': 'ED Moa tank top', 'Probability': 0.2777337431907654}, {'article_id': 747485010, 'product_code': 747485, 'product_name': 'MOMO cropt top', 'Probability': 0.26439327001571655}, {'article_id': 747807002, 'product_code': 747807, 'product_name': 'Alpha top', 'Probability': 0.13863137364387512}, {'article_id': 751216002, 'product_code': 751216, 'product_name': 'Angela', 'Probability': 0.40750300884246826}, {'article_id': 752477001, 'product_code': 752477, 'product_name': 'Porto Vecchio', 'Probability': 0.2014417052268982}, {'article_id': 752945001, 'product_code': 752945, 'product_name': 'Emerald plisse', 'Probability': 0.20482107996940613}, {'article_id': 753214002, 'product_code': 753214, 'product_name': 'Price tee - TVP- TM', 'Probability': 0.6212367415428162}, {'article_id': 753214006, 'product_code': 753214, 'product_name': 'Price tee - TVP- TM', 'Probability': 0.35972487926483154}, {'article_id': 753214014, 'product_code': 753214, 'product_name': 'Price tee - TVP- TM', 'Probability': 0.3558397889137268}, {'article_id': 754238001, 'product_code': 754238, 'product_name': 'Karin padded sport bra', 'Probability': 0.10678359866142273}, {'article_id': 755440002, 'product_code': 755440, 'product_name': 'Cora', 'Probability': 0.08052067458629608}, {'article_id': 757812006, 'product_code': 757812, 'product_name': 'Rob Tee', 'Probability': 0.33778876066207886}, {'article_id': 760281001, 'product_code': 760281, 'product_name': 'Christel volume blouse', 'Probability': 0.12190946936607361}, {'article_id': 761339003, 'product_code': 761339, 'product_name': 'Kim mesh tee', 'Probability': 0.19676461815834045}, {'article_id': 763275001, 'product_code': 763275, 'product_name': 'RYAN REG VN T-SHIRT', 'Probability': 0.18743494153022766}, {'article_id': 764554005, 'product_code': 764554, 'product_name': 'ED Plommon blouse', 'Probability': 0.6512213349342346}, {'article_id': 764624001, 'product_code': 764624, 'product_name': 'Carola sweater', 'Probability': 0.021965567022562027}, {'article_id': 765036001, 'product_code': 765036, 'product_name': 'ALYSSA TEE OL', 'Probability': 0.2304491400718689}, {'article_id': 765743007, 'product_code': 765743, 'product_name': 'SPORT Sulima jacket', 'Probability': 0.1661899983882904}, {'article_id': 767834001, 'product_code': 767834, 'product_name': 'Strap Top.', 'Probability': 0.16290628910064697}, {'article_id': 767834002, 'product_code': 767834, 'product_name': 'Strap Top.', 'Probability': -0.008201681077480316}, {'article_id': 767869001, 'product_code': 767869, 'product_name': 'V-neck Strap Top.', 'Probability': 0.28731033205986023}, {'article_id': 767869002, 'product_code': 767869, 'product_name': 'V-neck Strap Top.', 'Probability': 0.0224783793091774}, {'article_id': 767893001, 'product_code': 767893, 'product_name': 'Nala polo', 'Probability': 0.09582853317260742}, {'article_id': 768465001, 'product_code': 768465, 'product_name': 'Lucien', 'Probability': 0.26643940806388855}, {'article_id': 771329016, 'product_code': 771329, 'product_name': 'CSP cards smock top', 'Probability': 0.03798751160502434}, {'article_id': 772005007, 'product_code': 772005, 'product_name': 'Tilly.', 'Probability': 0.15950007736682892}, {'article_id': 772005008, 'product_code': 772005, 'product_name': 'Tilly.', 'Probability': 0.35234203934669495}, {'article_id': 772005009, 'product_code': 772005, 'product_name': 'Tilly.', 'Probability': 0.3830941319465637}, {'article_id': 772773002, 'product_code': 772773, 'product_name': 'Brody', 'Probability': 0.12440571188926697}, {'article_id': 772773004, 'product_code': 772773, 'product_name': 'Brody', 'Probability': 0.09736652672290802}, {'article_id': 772902001, 'product_code': 772902, 'product_name': 'Haze LS', 'Probability': 0.28175586462020874}, {'article_id': 773955001, 'product_code': 773955, 'product_name': 'Monica', 'Probability': -0.03128906339406967}, {'article_id': 775053002, 'product_code': 775053, 'product_name': 'Pixie sweater test', 'Probability': 0.1567891240119934}, {'article_id': 775328007, 'product_code': 775328, 'product_name': 'Villi Body', 'Probability': 0.5442159175872803}, {'article_id': 778064001, 'product_code': 778064, 'product_name': 'Claudine t-shirt', 'Probability': 0.2151062786579132}, {'article_id': 778064003, 'product_code': 778064, 'product_name': 'Claudine t-shirt', 'Probability': 0.2733561098575592}, {'article_id': 778064004, 'product_code': 778064, 'product_name': 'Claudine', 'Probability': 0.37645331025123596}, {'article_id': 778064005, 'product_code': 778064, 'product_name': 'Claudine', 'Probability': 0.1130155548453331}, {'article_id': 779551002, 'product_code': 779551, 'product_name': 'DIV Tess tee', 'Probability': -0.030816007405519485}, {'article_id': 779554002, 'product_code': 779554, 'product_name': 'DIV Nicky tank top', 'Probability': 0.3533177077770233}, {'article_id': 779706001, 'product_code': 779706, 'product_name': 'DIV Lee Long Parka', 'Probability': 0.3529664874076843}, {'article_id': 781758001, 'product_code': 781758, 'product_name': 'FRAME Easy Care TVP', 'Probability': 0.44543635845184326}, {'article_id': 781758011, 'product_code': 781758, 'product_name': 'FRAME Easy Care TVP', 'Probability': 0.26864153146743774}, {'article_id': 784547001, 'product_code': 784547, 'product_name': 'Effie LS', 'Probability': 0.35061338543891907}, {'article_id': 784858003, 'product_code': 784858, 'product_name': 'Sahara LS', 'Probability': 0.19535289704799652}, {'article_id': 786243001, 'product_code': 786243, 'product_name': 'HW Circus body', 'Probability': -0.020512685179710388}, {'article_id': 786304002, 'product_code': 786304, 'product_name': 'Sebi', 'Probability': 0.024357344955205917}, {'article_id': 787711003, 'product_code': 787711, 'product_name': 'EVIE BLOUSE', 'Probability': -0.018783459439873695}, {'article_id': 787946002, 'product_code': 787946, 'product_name': 'Moa 2 pack tank', 'Probability': 0.21911723911762238}, {'article_id': 788261001, 'product_code': 788261, 'product_name': 'Amanda Tank', 'Probability': 0.3219127058982849}, {'article_id': 788261004, 'product_code': 788261, 'product_name': 'Amanda Tank', 'Probability': 0.10364165157079697}, {'article_id': 790791004, 'product_code': 790791, 'product_name': 'Paulina blouse', 'Probability': 0.3733676075935364}, {'article_id': 791587001, 'product_code': 791587, 'product_name': 'Speedy tee (C)', 'Probability': 0.0931110829114914}, {'article_id': 795675001, 'product_code': 795675, 'product_name': 'Gabbi tank/nina/nelia', 'Probability': 0.16292381286621094}, {'article_id': 795675003, 'product_code': 795675, 'product_name': 'Gabbi tank/nina/nelia', 'Probability': 0.12654250860214233}, {'article_id': 795780001, 'product_code': 795780, 'product_name': 'EMMI OTS SS', 'Probability': 0.2761157751083374}, {'article_id': 797710001, 'product_code': 797710, 'product_name': 'Teddy turtleneck', 'Probability': 0.3908482789993286}, {'article_id': 797988001, 'product_code': 797988, 'product_name': 'Furby Roll Neck', 'Probability': 0.08184615522623062}, {'article_id': 798791001, 'product_code': 798791, 'product_name': 'Nemo sequin', 'Probability': 0.31835275888442993}, {'article_id': 801554002, 'product_code': 801554, 'product_name': 'Wheeler body', 'Probability': 0.29910582304000854}, {'article_id': 803772002, 'product_code': 803772, 'product_name': 'Amanda Rib', 'Probability': 0.2393290251493454}, \n {'article_id': 803772003, 'product_code': 803772, 'product_name': 'Amanda Rib', 'Probability': 0.2369837462902069}, {'article_id': 804631001, 'product_code': 804631, 'product_name': 'Jazz fur jacket', 'Probability': 0.1364995837211609}, {'article_id': 806012001, 'product_code': 806012, 'product_name': 'Deena', 'Probability': -0.014301788061857224}, {'article_id': 806388001, 'product_code': 806388, 'product_name': 'Therese tee', 'Probability': 0.20190341770648956}, {'article_id': 806388002, 'product_code': 806388, 'product_name': 'Therese tee', 'Probability': 0.2131682187318802}, {'article_id': 806388003, 'product_code': 806388, 'product_name': 'Therese tee', 'Probability': 0.2146935760974884}, {'article_id': 807273001, 'product_code': 807273, 'product_name': 'Carlisle seamless body', 'Probability': 0.516415536403656}, {'article_id': 810671003, 'product_code': 810671, 'product_name': 'Stairway blouse', 'Probability': 0.33589857816696167}, {'article_id': 810831002, 'product_code': 810831, 'product_name': 'Lennox.', 'Probability': -0.028043845668435097}, {'article_id': 811539001, 'product_code': 811539, 'product_name': 'Pappa tencel popover', 'Probability': 0.5306071043014526}, {'article_id': 817869001, 'product_code': 817869, 'product_name': 'Simba Tencel', 'Probability': 0.4003208875656128}, {'article_id': 818059001, 'product_code': 818059, 'product_name': 'Nat ls linnen solid', 'Probability': 0.36212313175201416}, {'article_id': 820162002, 'product_code': 820162, 'product_name': 'Billie NEON', 'Probability': 0.382382869720459}, {'article_id': 820541001, 'product_code': 820541, 'product_name': 'Cortardo body ol', 'Probability': 0.17722709476947784}, {'article_id': 824575001, 'product_code': 824575, 'product_name': 'Queen solid', 'Probability': 0.17338767647743225}, {'article_id': 824905002, 'product_code': 824905, 'product_name': 'Bendela LS', 'Probability': 0.36569684743881226}, {'article_id': 824905003, 'product_code': 824905, 'product_name': 'Bendela LS', 'Probability': 0.4019017815589905}, {'article_id': 826218001, 'product_code': 826218, 'product_name': 'Snipe LS', 'Probability': 0.15656371414661407}, {'article_id': 829643003, 'product_code': 829643, 'product_name': 'Salmon basic denim', 'Probability': -0.0236373171210289}, {'article_id': 832458002, 'product_code': 832458, 'product_name': 'CS Dorotea top', 'Probability': 0.33842602372169495}, {'article_id': 841383002, 'product_code': 841383, 'product_name': 'Vanessa 2-pack', 'Probability': 0.2011953592300415}, {'article_id': 841383003, 'product_code': 841383, 'product_name': 'Vanessa 2-pack', 'Probability': 0.23540528118610382}, {'article_id': 841750001, 'product_code': 841750, 'product_name': 'Catwoman blazer', 'Probability': 0.1649312973022461}, {'article_id': 842605001, 'product_code': 842605, 'product_name': 'Despacito', 'Probability': 0.29895344376564026}, {'article_id': 842952002, 'product_code': 842952, 'product_name': 'Barbaris', 'Probability': 0.16418766975402832}, {'article_id': 848256001, 'product_code': 848256, 'product_name': 'Brea body', 'Probability': 0.5961581468582153}, {'article_id': 850244003, 'product_code': 850244, 'product_name': 'Emily', 'Probability': 0.415046751499176}, {'article_id': 851546002, 'product_code': 851546, 'product_name': 'Ravello shackett', 'Probability': 0.06967738270759583}, {'article_id': 863456001, 'product_code': 863456, 'product_name': 'POLO SS SLIM COOLMAX', 'Probability': 0.2842092216014862}, {'article_id': 863456003, 'product_code': 863456, 'product_name': 'POLO SS SLIM COOLMAX', 'Probability': 0.1487487405538559}, {'article_id': 864668002, 'product_code': 864668, 'product_name': 'Cat cotton tee', 'Probability': 0.3536418676376343}, {'article_id': 864668004, 'product_code': 864668, 'product_name': 'Cat cotton tee', 'Probability': 0.11701775342226028}, {'article_id': 865926002, 'product_code': 865926, 'product_name': 'Sonja top', 'Probability': 0.24699732661247253}, {'article_id': 877666001, 'product_code': 877666, 'product_name': 'ED Antonia tee', 'Probability': 0.21153029799461365}, {'article_id': 878502001, 'product_code': 878502, 'product_name': 'Barley tee', 'Probability': 0.4936172366142273}, {'article_id': 878510003, 'product_code': 878510, 'product_name': 'Ariel', 'Probability': 0.17755448818206787}, {'article_id': 878510004, 'product_code': 878510, 'product_name': 'Ariel', 'Probability': 0.16991956532001495}, {'article_id': 887770005, 'product_code': 887770, 'product_name': 'Orvar strap top', 'Probability': 0.1662282645702362}, {'article_id': 889456002, 'product_code': 889456, 'product_name': 'Delphine Shirt', 'Probability': 0.2374887764453888}, {'article_id': 892910002, 'product_code': 892910, 'product_name': 'Nelia tank', 'Probability': 0.25959277153015137}, {'article_id': 893994001, 'product_code': 893994, 'product_name': 'V-Neck Strap Top Long 2-pk', 'Probability': 0.30340108275413513}, {'article_id': 898918002, 'product_code': 898918, 'product_name': 'Shanghai CN', 'Probability': 0.20307955145835876}, {'article_id': 902507001, 'product_code': 902507, 'product_name': 'Banana split sweatshirt', 'Probability': 0.16565263271331787}, {'article_id': 912204001, 'product_code': 912204, 'product_name': 'Pinky loose tank (C)', 'Probability': 0.4580584764480591}, {'article_id': 921266005, 'product_code': 921266, 'product_name': 'Sasha', 'Probability': 0.31445369124412537}, {'article_id': 921347003, 'product_code': 921347, 'product_name': 'Cassia crew', 'Probability': 0.1627430021762848}, {'article_id': 933706001, 'product_code': 933706, 'product_name': 'Penelope Denim Price Item', 'Probability': 0.25986069440841675}, {'article_id': 253448003, 'product_code': 253448, 'product_name': 'OP Push Melbourne^', 'Probability': 0.3617970943450928}, {'article_id': 307239004, 'product_code': 307239, 'product_name': 'Hilly Brief 2pk LT', 'Probability': 0.06533901393413544}, {'article_id': 351933029, 'product_code': 351933, 'product_name': 'Kelly Lace Padded Idro 2p', 'Probability': 0.23495963215827942}, {'article_id': 395575001, 'product_code': 395575, 'product_name': 'Emily Brief', 'Probability': 0.2361336648464203}, {'article_id': 426199002, 'product_code': 426199, 'product_name': 'Ellen Shortie Daisy Low 3p', 'Probability': 0.4706132411956787}, {'article_id': 429313006, 'product_code': 429313, 'product_name': 'Charlotte SP Andes', 'Probability': 0.16508848965168}, {'article_id': 452616001, 'product_code': 452616, 'product_name': 'SIVAN 2 PACK', 'Probability': 0.21773512661457062}, {'article_id': 464277017, 'product_code': 464277, 'product_name': 'Greta Shortie (Daisy Mid) 3p', 'Probability': 0.28433358669281006}, {'article_id': 464297007, 'product_code': 464297, 'product_name': 'Greta Thong Mynta Low 3p', 'Probability': 0.22632107138633728}, {'article_id': 469658009, 'product_code': 469658, 'product_name': 'Spice Girl 3pk hipster', 'Probability': 0.23438730835914612}, {'article_id': 470789019, 'product_code': 470789, 'product_name': 'OP Brazilian 2p Low (Acacia)', 'Probability': 0.16635511815547943}, {'article_id': 477107015, 'product_code': 477107, 'product_name': 'Ellen Bikini Clover Mid 3p', 'Probability': 0.25162583589553833}, {'article_id': 486639003, 'product_code': 486639, 'product_name': 'Jackie brief 2pk HR LS', 'Probability': 0.2176513373851776}, {'article_id': 492897002, 'product_code': 492897, 'product_name': 'Alba Push-Up Biker HW FS', 'Probability': 0.20027869939804077}, {'article_id': 507883009, 'product_code': 507883, 'product_name': 'Ellen Thong (Malva) L 3pk', 'Probability': 0.21624886989593506}, {'article_id': 514482002, 'product_code': 514482, 'product_name': 'Pepper padded softbra molly', 'Probability': 0.2673286199569702}, {'article_id': 529012024, 'product_code': 529012, 'product_name': 'Hazelnut Brazilian Acacia Low', 'Probability': 0.2602479159832001}, {'article_id': 539197011, 'product_code': 539197, 'product_name': 'Clemenza thong (1)', 'Probability': 0.11449705064296722}, {'article_id': 547052001, 'product_code': 547052, 'product_name': 'Hilly body Unpad LS', 'Probability': 0.3493536710739136}, {'article_id': 557599022, 'product_code': 557599, 'product_name': 'Samantha 2p Brazilian (Acacia)', 'Probability': 0.33249157667160034}, {'article_id': 564786001, 'product_code': 564786, 'product_name': 'KARIN sports bra', 'Probability': 0.2646130621433258}, {'article_id': 573390001, 'product_code': 573390, 'product_name': 'Greta Bikini (Camelia) 3p', 'Probability': 0.2198820859193802}, {'article_id': 580000003, 'product_code': 580000, 'product_name': '50 cent thong (O)', 'Probability': 0.16643700003623962}, {'article_id': 603145001, 'product_code': 603145, 'product_name': 'Angela hipster', 'Probability': 0.39037320017814636}, {'article_id': 605094001, 'product_code': 605094, 'product_name': 'Fred Shortie 3 pack', 'Probability': 0.23063769936561584}, {'article_id': 605106002, 'product_code': 605106, 'product_name': 'Rose thong', 'Probability': 0.19120316207408905}, {'article_id': 619287003, 'product_code': 619287, 'product_name': 'Stella lace brief', 'Probability': 0.11508189141750336}, {'article_id': 637676001, 'product_code': 637676, 'product_name': 'Jenny padded bra', 'Probability': 0.08072516322135925}, {'article_id': 650274001, 'product_code': 650274, 'product_name': 'Luna Hipster Poppy High CS', 'Probability': 0.17235690355300903}, {'article_id': 654590001, 'product_code': 654590, 'product_name': 'HM+ Jackie Brief HW LS', 'Probability': 0.2670596241950989}, {'article_id': 656032004, 'product_code': 656032, 'product_name': 'Eden Brazilian Azalea Mid', 'Probability': 0.5400983095169067}, {'article_id': 657014001, 'product_code': 657014, 'product_name': 'SERENA 3-P tanktop', 'Probability': 0.03735846281051636}, {'article_id': 665873002, 'product_code': 665873, 'product_name': 'Angela Lace Hipster', 'Probability': 0.3253597617149353}, {'article_id': 665963008, 'product_code': 665963, 'product_name': 'Cardamom thong', 'Probability': 0.5266923308372498},\n {'article_id': 666044001, 'product_code': 666044, 'product_name': 'Mistletoe highwaist thong', 'Probability': 0.4542880058288574}, {'article_id': 666044003, 'product_code': 666044, 'product_name': 'Mistletoe highwaist thong', 'Probability': 0.45426642894744873}, {'article_id': 666651001, 'product_code': 666651, 'product_name': 'Charlotte hipster', 'Probability': 0.2185143381357193}, {'article_id': 670162002, 'product_code': 670162, 'product_name': 'Majken shortie', 'Probability': 0.24098239839076996}, {'article_id': 679280001, 'product_code': 679280, 'product_name': 'Charlotte Bikini Lotus Low', 'Probability': 0.3919510245323181}, {'article_id': 679280002, 'product_code': 679280, 'product_name': 'Charlotte Bikini Lotus Low', 'Probability': 0.41702353954315186}, {'article_id': 679280005, 'product_code': 679280, 'product_name': 'Charlotte Bikini Lotus Low', 'Probability': 0.41069161891937256}, {'article_id': 679284001, 'product_code': 679284, 'product_name': 'Charlotte SP Straps Andes', 'Probability': 0.17002306878566742}, {'article_id': 684981002, 'product_code': 684981, 'product_name': 'Cardamom Thong Maple Low', 'Probability': 0.37762585282325745}, {'article_id': 687176001, 'product_code': 687176, 'product_name': 'Margarita Mynta Thong', 'Probability': 0.2594326138496399}, {'article_id': 687176003, 'product_code': 687176, 'product_name': 'Margarita Mynta Thong', 'Probability': 0.2640409469604492}, {'article_id': 697425001, 'product_code': 697425, 'product_name': 'Edina brief plussize', 'Probability': 0.5502809286117554}, {'article_id': 699361001, 'product_code': 699361, 'product_name': 'Samantha Thong Mynta Low', 'Probability': 0.4147995710372925}, {'article_id': 699598007, 'product_code': 699598, 'product_name': 'Samantha Strapless Balconette', 'Probability': 0.17794735729694366}, {'article_id': 700329001, 'product_code': 700329, 'product_name': 'Buzz SP Bralette', 'Probability': 0.044746123254299164}, {'article_id': 700691002, 'product_code': 700691, 'product_name': 'Khloe highleg brazilian (opt1)', 'Probability': 0.15235483646392822}, {'article_id': 701046002, 'product_code': 701046, 'product_name': 'Charlotte cut padding (1)', 'Probability': 0.33956605195999146}, {'article_id': 701472001, 'product_code': 701472, 'product_name': 'Cornelia Bandeau LP', 'Probability': 0.3047044575214386}, {'article_id': 701472004, 'product_code': 701472, 'product_name': 'Cornelia Bandeau LP', 'Probability': 0.2924010753631592}, {'article_id': 701472005, 'product_code': 701472, 'product_name': 'Cornelia Bandeau LP', 'Probability': 0.280484139919281}, {'article_id': 703474001, 'product_code': 703474, 'product_name': 'Margarita Push w. Back Detail', 'Probability': 0.13696128129959106}, {'article_id': 704128007, 'product_code': 704128, 'product_name': 'PENELOPE seamless low bra', 'Probability': 0.11635428667068481}, {'article_id': 704754001, 'product_code': 704754, 'product_name': 'Ellen 3p tanga thong LR', 'Probability': 0.12310522049665451}, {'article_id': 708175005, 'product_code': 708175, 'product_name': 'Lykke Brazilian Acacia Low', 'Probability': 0.07048489898443222}, {'article_id': 711193001, 'product_code': 711193, 'product_name': 'Buzz Bikini', 'Probability': 0.3431428074836731}, {'article_id': 716735002, 'product_code': 716735, 'product_name': 'Ilse thong', 'Probability': 0.278018057346344}, {'article_id': 720137001, 'product_code': 720137, 'product_name': 'Cornelia Thong LP', 'Probability': 0.2669092118740082}, {'article_id': 720137002, 'product_code': 720137, 'product_name': 'Cornelia Thong LP', 'Probability': 0.31170082092285156}, {'article_id': 720137003, 'product_code': 720137, 'product_name': 'Cornelia Thong LP', 'Probability': 0.310690701007843}, {'article_id': 720137004, 'product_code': 720137, 'product_name': 'Cornelia Thong LP', 'Probability': 0.28438618779182434}, {'article_id': 720137005, 'product_code': 720137, 'product_name': 'Cornelia Thong LP', 'Probability': 0.28793638944625854}, {'article_id': 720137007, 'product_code': 720137, 'product_name': 'Cornelia Thong LP', 'Probability': 0.29332295060157776}, {'article_id': 723469001, 'product_code': 723469, 'product_name': 'Kelly 2pk Melbourne push ct', 'Probability': 0.2646530866622925}, {'article_id': 729318001, 'product_code': 729318, 'product_name': 'Bagira Push Melbourne', 'Probability': 0.275371253490448}, {'article_id': 732207001, 'product_code': 732207, 'product_name': 'Evelina top', 'Probability': 0.3282729983329773}, {'article_id': 733067002, 'product_code': 733067, 'product_name': '2p Op hipster reg mid', 'Probability': 0.2579740881919861}, {'article_id': 736531001, 'product_code': 736531, 'product_name': 'Hazelnut Brazilian Azalea Low', 'Probability': 0.5519769191741943}, {'article_id': 736780002, 'product_code': 736780, 'product_name': 'Khloe high leg high waist bott', 'Probability': 0.20511874556541443}, {'article_id': 745168001, 'product_code': 745168, 'product_name': 'Sunday Kimono (W)', 'Probability': 0.2307458221912384}, {'article_id': 746775004, 'product_code': 746775, 'product_name': 'Dahlia Push Bralette', 'Probability': 0.020951952785253525}, {'article_id': 748574001, 'product_code': 748574, 'product_name': 'Khloe Seamless padded soft bra', 'Probability': 0.2357834428548813}, {'article_id': 751286003, 'product_code': 751286, 'product_name': 'Beast Thong Mynta Low', 'Probability': 0.13206852972507477}, {'article_id': 761624001, 'product_code': 761624, 'product_name': 'Casper highwaist thong', 'Probability': 0.2570359706878662}, {'article_id': 763863001, 'product_code': 763863, 'product_name': 'SOLO BRAZILIAN', 'Probability': 0.23535479605197906}, {'article_id': 798407007, 'product_code': 798407, 'product_name': 'Orlando Mynta Thong', 'Probability': 0.34316927194595337}, {'article_id': 798416001, 'product_code': 798416, 'product_name': 'Kendrick tie thong', 'Probability': 0.3260517120361328}, {'article_id': 803986001, 'product_code': 803986, 'product_name': 'Kendrick Brazilian Anemon', 'Probability': 0.17696616053581238}, {'article_id': 803986007, 'product_code': 803986, 'product_name': 'Kendrick Brazilian Anemon', 'Probability': 0.3419758677482605}, {'article_id': 810557007, 'product_code': 810557, 'product_name': 'Orlando C&S Push', 'Probability': 0.07757213711738586}, {'article_id': 812271004, 'product_code': 812271, 'product_name': 'Kendrick Padded Soft Top Bea', 'Probability': 0.1185188740491867}, {'article_id': 820507001, 'product_code': 820507, 'product_name': 'Charlotte Hipster Primula', 'Probability': 0.289273202419281}, {'article_id': 821398009, 'product_code': 821398, 'product_name': 'Liza 3p thong micro', 'Probability': 0.3524026870727539}, {'article_id': 826865001, 'product_code': 826865, 'product_name': 'Strong seamless bralette', 'Probability': 0.12123501300811768}, {'article_id': 852174003, 'product_code': 852174, 'product_name': 'Firepower seamless bralette', 'Probability': 0.1881619244813919}, {'article_id': 864415003, 'product_code': 864415, 'product_name': 'Ilse Myntha Thong 2p', 'Probability': 0.32260996103286743}, {'article_id': 892313001, 'product_code': 892313, 'product_name': 'Meraki bottom', 'Probability': 0.03909462317824364}]","metadata":{"execution":{"iopub.status.busy":"2023-08-19T16:29:34.461799Z","iopub.execute_input":"2023-08-19T16:29:34.462193Z","iopub.status.idle":"2023-08-19T16:29:34.649624Z","shell.execute_reply.started":"2023-08-19T16:29:34.462162Z","shell.execute_reply":"2023-08-19T16:29:34.648486Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data = {\n    {\n        \"article_id\": 470789019\n    },\n    {\n        \"product_code\": 470789\n    },\n    {\n        \"prod_name\": \"OP Brazilian 2p Low (Acacia)\"\n    }\n}\n# Flatten the data and sort by probability\nflattened_data = []\nfor category, items in data.items():\n    for item in items:\n        article_id = item[0]['article_id']\n        product_code = item[1]['product_code']\n        prod_name = item[2]['prod_name']\n        probability = item[3]['probability'][0]\n        flattened_data.append((prod_name, probability))\n\nsorted_data = sorted(flattened_data, key=lambda x: x[1], reverse=True)\n","metadata":{"execution":{"iopub.status.busy":"2023-08-19T16:32:44.730016Z","iopub.execute_input":"2023-08-19T16:32:44.73065Z","iopub.status.idle":"2023-08-19T16:32:44.769124Z","shell.execute_reply.started":"2023-08-19T16:32:44.730615Z","shell.execute_reply":"2023-08-19T16:32:44.768024Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"lambda x: x[1]","metadata":{"execution":{"iopub.status.busy":"2023-08-19T15:33:33.897095Z","iopub.execute_input":"2023-08-19T15:33:33.897505Z","iopub.status.idle":"2023-08-19T15:38:21.244539Z","shell.execute_reply.started":"2023-08-19T15:33:33.897474Z","shell.execute_reply":"2023-08-19T15:38:21.243521Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for for article_id,probability in lst:\n    if article_id==803757004:\n        print(probability)\n        ","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"articles[articles['article_id']==803757004]","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# lst","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"user_id = 20\n# selected_product_group_names = [\"Underwear\", \"Garment Upper body\"]\nlst = categorical_recommend_items(user_id, GraphTravel_HM, embeddings, item_name_mapping, num_items=10)\nlst","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"article_info = articles[articles['article_id']==803757004]\narticle_info","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"articles['article_id']","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"lst_items_id = []\nfor i in lst:\n           lst_items_id.append(i[0])\nlst_items_id","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Filter article IDs and their category names based on selected product_group_names\nfiltered_data = articles[\n(articles['product_group_name'].isin(selected_product_group_names)) &\n(articles['article_id'].isin(lst_items_id))\n][['article_id', 'product_group_name','product_code', 'prod_name', 'product_type_no',\n       'product_type_name', 'graphical_appearance_no',\n       'graphical_appearance_name', 'colour_group_code', 'colour_group_name',\n       'perceived_colour_value_id', 'perceived_colour_value_name',\n       'perceived_colour_master_id', 'perceived_colour_master_name',\n       'department_no', 'department_name', 'index_code', 'index_name',\n       'index_group_no', 'index_group_name', 'section_no', 'section_name',\n       'garment_group_no', 'garment_group_name', 'detail_desc']]","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"filtered_data","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"articles.columns","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"result_dict = {}\nfor _, row in filtered_data.iterrows():\n    article_id = row['article_id']\n    category_name = row['product_group_name']\n    if category_name not in result_dict:\n            result_dict[category_name] = []\n    result_dict[category_name].append([\n                                       {'article_id':article_id},\n                                       {'product_code':row['product_code']},\n                                       {'prod_name':row['prod_name']},\n                                       {'probability':[np.float(i[1]) for i in lst if i[0] == article_id]}\n                                      ])","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import json\njson.dumps(result_dict)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"'{\"user_id\": 1012, \"category\": [\"Underwear\", \"Garment Upper body\"]}'","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import json","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"json.loads('{\"user_id\": 1012, \"category\": [\"Underwear\", \"Garment Upper body\"]}')['user_id']","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import json\n'Underwear,Garment%2BUpper%2Bbody'","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:08:52.396968Z","iopub.execute_input":"2023-08-20T11:08:52.397326Z","iopub.status.idle":"2023-08-20T11:08:52.403718Z","shell.execute_reply.started":"2023-08-20T11:08:52.397297Z","shell.execute_reply":"2023-08-20T11:08:52.402498Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"'Underwear,Garment%2BUpper%2Bbody'.split(',')","metadata":{"execution":{"iopub.status.busy":"2023-08-20T11:09:06.282301Z","iopub.execute_input":"2023-08-20T11:09:06.282997Z","iopub.status.idle":"2023-08-20T11:09:06.289473Z","shell.execute_reply.started":"2023-08-20T11:09:06.282963Z","shell.execute_reply":"2023-08-20T11:09:06.288415Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}