Systemy-rekomedacyjne-praca.../P5. Graph-based.ipynb

3630 lines
677 KiB
Plaintext
Raw Permalink Normal View History

2020-06-05 16:01:34 +02:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Self made RP3-beta"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import helpers\n",
"import pandas as pd\n",
"import numpy as np\n",
"import scipy.sparse as sparse\n",
"from collections import defaultdict\n",
"from itertools import chain\n",
"import random\n",
"import time\n",
"import matplotlib.pyplot as plt\n",
"\n",
"train_read=pd.read_csv('./Datasets/ml-100k/train.csv', sep='\\t', header=None)\n",
"test_read=pd.read_csv('./Datasets/ml-100k/test.csv', sep='\\t', header=None)\n",
"train_ui, test_ui, user_code_id, user_id_code, item_code_id, item_id_code = helpers.data_to_csr(train_read, test_read)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"class RP3Beta():\n",
" def fit(self, train_ui, alpha, beta):\n",
" \"\"\"We weight our edges by user's explicit ratings so if user rated movie high we'll follow that path\n",
" with higher probability.\"\"\"\n",
" self.train_ui=train_ui\n",
" self.train_iu=train_ui.transpose()\n",
" \n",
" self.alpha = alpha\n",
" self.beta = beta\n",
" \n",
" # Define Pui \n",
" Pui=sparse.csr_matrix(self.train_ui/self.train_ui.sum(axis=1))\n",
" \n",
" # Define Piu\n",
" to_divide=np.vectorize(lambda x: x if x>0 else 1)(self.train_iu.sum(axis=1)) # to avoid dividing by zero\n",
" Piu=sparse.csr_matrix(self.train_iu/to_divide)\n",
" item_orders=(self.train_ui>0).sum(axis=0)\n",
" \n",
" Pui = Pui.power(self.alpha)\n",
" Piu = Piu.power(self.alpha)\n",
"\n",
" P3=Pui*Piu*Pui\n",
" \n",
" P3/=np.power(np.vectorize(lambda x: x if x>0 else 1)(item_orders), self.beta)\n",
" \n",
" self.estimations=np.array(P3)\n",
" \n",
" def recommend(self, user_code_id, item_code_id, topK=10):\n",
" \n",
" top_k = defaultdict(list)\n",
" for nb_user, user in enumerate(self.estimations):\n",
" \n",
" user_rated=self.train_ui.indices[self.train_ui.indptr[nb_user]:self.train_ui.indptr[nb_user+1]]\n",
" for item, score in enumerate(user):\n",
" if item not in user_rated and not np.isnan(score):\n",
" top_k[user_code_id[nb_user]].append((item_code_id[item], score))\n",
" result=[]\n",
" # Let's choose k best items in the format: (user, item1, score1, item2, score2, ...)\n",
" for uid, item_scores in top_k.items():\n",
" item_scores.sort(key=lambda x: x[1], reverse=True)\n",
" result.append([uid]+list(chain(*item_scores[:topK])))\n",
" return result\n",
" \n",
" def estimate(self, user_code_id, item_code_id, test_ui):\n",
" result=[]\n",
" for user, item in zip(*test_ui.nonzero()):\n",
" result.append([user_code_id[user], item_code_id[item], \n",
" self.estimations[user,item] if not np.isnan(self.estimations[user,item]) else 1])\n",
" return result"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"model=RP3Beta()\n",
"model.fit(train_ui, alpha=1, beta=0)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"top_n=pd.DataFrame(model.recommend(user_code_id, item_code_id, topK=10))\n",
"\n",
"top_n.to_csv('Recommendations generated/ml-100k/Self_P3_reco.csv', index=False, header=False)\n",
"\n",
"estimations=pd.DataFrame(model.estimate(user_code_id, item_code_id, test_ui))\n",
"estimations.to_csv('Recommendations generated/ml-100k/Self_P3_estimations.csv', index=False, header=False)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"943it [00:00, 11083.98it/s]\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>RMSE</th>\n",
" <th>MAE</th>\n",
" <th>precision</th>\n",
" <th>recall</th>\n",
" <th>F_1</th>\n",
" <th>F_05</th>\n",
" <th>precision_super</th>\n",
" <th>recall_super</th>\n",
" <th>NDCG</th>\n",
" <th>mAP</th>\n",
" <th>MRR</th>\n",
" <th>LAUC</th>\n",
" <th>HR</th>\n",
" <th>F_2</th>\n",
" <th>Whole_average</th>\n",
" <th>Reco in test</th>\n",
" <th>Test coverage</th>\n",
" <th>Shannon</th>\n",
" <th>Gini</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3.702446</td>\n",
" <td>3.527273</td>\n",
" <td>0.282185</td>\n",
" <td>0.192092</td>\n",
" <td>0.186749</td>\n",
" <td>0.21698</td>\n",
" <td>0.204185</td>\n",
" <td>0.240096</td>\n",
" <td>0.339114</td>\n",
" <td>0.204905</td>\n",
" <td>0.572157</td>\n",
" <td>0.593544</td>\n",
" <td>0.875928</td>\n",
" <td>0.181702</td>\n",
" <td>0.340803</td>\n",
" <td>1.0</td>\n",
" <td>0.077201</td>\n",
" <td>3.875892</td>\n",
" <td>0.974947</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" RMSE MAE precision recall F_1 F_05 \\\n",
"0 3.702446 3.527273 0.282185 0.192092 0.186749 0.21698 \n",
"\n",
" precision_super recall_super NDCG mAP MRR LAUC \\\n",
"0 0.204185 0.240096 0.339114 0.204905 0.572157 0.593544 \n",
"\n",
" HR F_2 Whole_average Reco in test Test coverage Shannon \\\n",
"0 0.875928 0.181702 0.340803 1.0 0.077201 3.875892 \n",
"\n",
" Gini \n",
"0 0.974947 "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import evaluation_measures as ev\n",
"estimations_df=pd.read_csv('Recommendations generated/ml-100k/Self_P3_estimations.csv', header=None)\n",
"reco=np.loadtxt('Recommendations generated/ml-100k/Self_P3_reco.csv', delimiter=',')\n",
"\n",
"ev.evaluate(test=pd.read_csv('./Datasets/ml-100k/test.csv', sep='\\t', header=None),\n",
" estimations_df=estimations_df, \n",
" reco=reco,\n",
" super_reactions=[4,5])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Let's check hiperparameters"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Alpha"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
" 0%| | 0/8 [00:00<?, ?it/s]\n",
"943it [00:00, 10829.24it/s]\n",
" 12%|██████████▌ | 1/8 [00:07<00:54, 7.76s/it]\n",
"943it [00:00, 10352.86it/s]\n",
" 25%|█████████████████████ | 2/8 [00:15<00:46, 7.74s/it]\n",
"943it [00:00, 10130.29it/s]\n",
" 38%|███████████████████████████████▌ | 3/8 [00:23<00:38, 7.75s/it]\n",
"943it [00:00, 10130.62it/s]\n",
" 50%|██████████████████████████████████████████ | 4/8 [00:30<00:30, 7.74s/it]\n",
"943it [00:00, 10240.79it/s]\n",
" 62%|████████████████████████████████████████████████████▌ | 5/8 [00:38<00:23, 7.79s/it]\n",
"943it [00:00, 10585.44it/s]\n",
" 75%|███████████████████████████████████████████████████████████████ | 6/8 [00:46<00:15, 7.87s/it]\n",
"943it [00:00, 9990.63it/s]\n",
" 88%|█████████████████████████████████████████████████████████████████████████▌ | 7/8 [00:55<00:07, 7.99s/it]\n",
"943it [00:00, 10706.30it/s]\n",
"100%|████████████████████████████████████████████████████████████████████████████████████| 8/8 [01:03<00:00, 7.92s/it]\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Alpha</th>\n",
" <th>RMSE</th>\n",
" <th>MAE</th>\n",
" <th>precision</th>\n",
" <th>recall</th>\n",
" <th>F_1</th>\n",
" <th>F_05</th>\n",
" <th>precision_super</th>\n",
" <th>recall_super</th>\n",
" <th>NDCG</th>\n",
" <th>mAP</th>\n",
" <th>MRR</th>\n",
" <th>LAUC</th>\n",
" <th>HR</th>\n",
" <th>F_2</th>\n",
" <th>Whole_average</th>\n",
" <th>Reco in test</th>\n",
" <th>Test coverage</th>\n",
" <th>Shannon</th>\n",
" <th>Gini</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.2</td>\n",
" <td>268.177832</td>\n",
" <td>211.732649</td>\n",
" <td>0.262672</td>\n",
" <td>0.166858</td>\n",
" <td>0.166277</td>\n",
" <td>0.197184</td>\n",
" <td>0.187661</td>\n",
" <td>0.203252</td>\n",
" <td>0.320910</td>\n",
" <td>0.196132</td>\n",
" <td>0.563378</td>\n",
" <td>0.580866</td>\n",
" <td>0.850477</td>\n",
" <td>0.159293</td>\n",
" <td>0.321247</td>\n",
" <td>1.000000</td>\n",
" <td>0.060606</td>\n",
" <td>3.669627</td>\n",
" <td>0.979636</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.4</td>\n",
" <td>10.546689</td>\n",
" <td>7.792373</td>\n",
" <td>0.268505</td>\n",
" <td>0.172669</td>\n",
" <td>0.171569</td>\n",
" <td>0.202643</td>\n",
" <td>0.192489</td>\n",
" <td>0.212653</td>\n",
" <td>0.326760</td>\n",
" <td>0.200172</td>\n",
" <td>0.565148</td>\n",
" <td>0.583801</td>\n",
" <td>0.854719</td>\n",
" <td>0.164747</td>\n",
" <td>0.326323</td>\n",
" <td>1.000000</td>\n",
" <td>0.064214</td>\n",
" <td>3.726996</td>\n",
" <td>0.978426</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.6</td>\n",
" <td>3.143988</td>\n",
" <td>2.948790</td>\n",
" <td>0.274655</td>\n",
" <td>0.180502</td>\n",
" <td>0.177820</td>\n",
" <td>0.208730</td>\n",
" <td>0.198176</td>\n",
" <td>0.222746</td>\n",
" <td>0.332872</td>\n",
" <td>0.203290</td>\n",
" <td>0.568872</td>\n",
" <td>0.587738</td>\n",
" <td>0.870626</td>\n",
" <td>0.171652</td>\n",
" <td>0.333140</td>\n",
" <td>1.000000</td>\n",
" <td>0.065657</td>\n",
" <td>3.785282</td>\n",
" <td>0.977090</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.8</td>\n",
" <td>3.670728</td>\n",
" <td>3.495735</td>\n",
" <td>0.281972</td>\n",
" <td>0.189868</td>\n",
" <td>0.185300</td>\n",
" <td>0.216071</td>\n",
" <td>0.203541</td>\n",
" <td>0.236751</td>\n",
" <td>0.339867</td>\n",
" <td>0.206688</td>\n",
" <td>0.573729</td>\n",
" <td>0.592432</td>\n",
" <td>0.874867</td>\n",
" <td>0.179823</td>\n",
" <td>0.340076</td>\n",
" <td>1.000000</td>\n",
" <td>0.070707</td>\n",
" <td>3.832415</td>\n",
" <td>0.975998</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1.0</td>\n",
" <td>3.702446</td>\n",
" <td>3.527273</td>\n",
" <td>0.282185</td>\n",
" <td>0.192092</td>\n",
" <td>0.186749</td>\n",
" <td>0.216980</td>\n",
" <td>0.204185</td>\n",
" <td>0.240096</td>\n",
" <td>0.339114</td>\n",
" <td>0.204905</td>\n",
" <td>0.572157</td>\n",
" <td>0.593544</td>\n",
" <td>0.875928</td>\n",
" <td>0.181702</td>\n",
" <td>0.340803</td>\n",
" <td>1.000000</td>\n",
" <td>0.077201</td>\n",
" <td>3.875892</td>\n",
" <td>0.974947</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1.2</td>\n",
" <td>3.704441</td>\n",
" <td>3.529251</td>\n",
" <td>0.280912</td>\n",
" <td>0.193633</td>\n",
" <td>0.187311</td>\n",
" <td>0.216872</td>\n",
" <td>0.203004</td>\n",
" <td>0.240588</td>\n",
" <td>0.338049</td>\n",
" <td>0.203453</td>\n",
" <td>0.571830</td>\n",
" <td>0.594313</td>\n",
" <td>0.883351</td>\n",
" <td>0.182776</td>\n",
" <td>0.341341</td>\n",
" <td>1.000000</td>\n",
" <td>0.085859</td>\n",
" <td>3.910718</td>\n",
" <td>0.974073</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1.4</td>\n",
" <td>3.704580</td>\n",
" <td>3.529388</td>\n",
" <td>0.273595</td>\n",
" <td>0.190651</td>\n",
" <td>0.183874</td>\n",
" <td>0.212183</td>\n",
" <td>0.199464</td>\n",
" <td>0.239118</td>\n",
" <td>0.329550</td>\n",
" <td>0.195433</td>\n",
" <td>0.566171</td>\n",
" <td>0.592793</td>\n",
" <td>0.871686</td>\n",
" <td>0.179766</td>\n",
" <td>0.336190</td>\n",
" <td>1.000000</td>\n",
" <td>0.107504</td>\n",
" <td>3.961915</td>\n",
" <td>0.972674</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1.6</td>\n",
" <td>3.704591</td>\n",
" <td>3.529399</td>\n",
" <td>0.263097</td>\n",
" <td>0.186255</td>\n",
" <td>0.178709</td>\n",
" <td>0.205170</td>\n",
" <td>0.191094</td>\n",
" <td>0.232920</td>\n",
" <td>0.317439</td>\n",
" <td>0.184917</td>\n",
" <td>0.552349</td>\n",
" <td>0.590545</td>\n",
" <td>0.868505</td>\n",
" <td>0.175419</td>\n",
" <td>0.328868</td>\n",
" <td>0.999576</td>\n",
" <td>0.156566</td>\n",
" <td>4.060156</td>\n",
" <td>0.969203</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Alpha RMSE MAE precision recall F_1 F_05 \\\n",
"0 0.2 268.177832 211.732649 0.262672 0.166858 0.166277 0.197184 \n",
"0 0.4 10.546689 7.792373 0.268505 0.172669 0.171569 0.202643 \n",
"0 0.6 3.143988 2.948790 0.274655 0.180502 0.177820 0.208730 \n",
"0 0.8 3.670728 3.495735 0.281972 0.189868 0.185300 0.216071 \n",
"0 1.0 3.702446 3.527273 0.282185 0.192092 0.186749 0.216980 \n",
"0 1.2 3.704441 3.529251 0.280912 0.193633 0.187311 0.216872 \n",
"0 1.4 3.704580 3.529388 0.273595 0.190651 0.183874 0.212183 \n",
"0 1.6 3.704591 3.529399 0.263097 0.186255 0.178709 0.205170 \n",
"\n",
" precision_super recall_super NDCG mAP MRR LAUC \\\n",
"0 0.187661 0.203252 0.320910 0.196132 0.563378 0.580866 \n",
"0 0.192489 0.212653 0.326760 0.200172 0.565148 0.583801 \n",
"0 0.198176 0.222746 0.332872 0.203290 0.568872 0.587738 \n",
"0 0.203541 0.236751 0.339867 0.206688 0.573729 0.592432 \n",
"0 0.204185 0.240096 0.339114 0.204905 0.572157 0.593544 \n",
"0 0.203004 0.240588 0.338049 0.203453 0.571830 0.594313 \n",
"0 0.199464 0.239118 0.329550 0.195433 0.566171 0.592793 \n",
"0 0.191094 0.232920 0.317439 0.184917 0.552349 0.590545 \n",
"\n",
" HR F_2 Whole_average Reco in test Test coverage Shannon \\\n",
"0 0.850477 0.159293 0.321247 1.000000 0.060606 3.669627 \n",
"0 0.854719 0.164747 0.326323 1.000000 0.064214 3.726996 \n",
"0 0.870626 0.171652 0.333140 1.000000 0.065657 3.785282 \n",
"0 0.874867 0.179823 0.340076 1.000000 0.070707 3.832415 \n",
"0 0.875928 0.181702 0.340803 1.000000 0.077201 3.875892 \n",
"0 0.883351 0.182776 0.341341 1.000000 0.085859 3.910718 \n",
"0 0.871686 0.179766 0.336190 1.000000 0.107504 3.961915 \n",
"0 0.868505 0.175419 0.328868 0.999576 0.156566 4.060156 \n",
"\n",
" Gini \n",
"0 0.979636 \n",
"0 0.978426 \n",
"0 0.977090 \n",
"0 0.975998 \n",
"0 0.974947 \n",
"0 0.974073 \n",
"0 0.972674 \n",
"0 0.969203 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from tqdm import tqdm\n",
"result=[]\n",
"for alpha in tqdm([round(i,1) for i in np.arange(0.2,1.6001,0.2)]):\n",
" model=RP3Beta()\n",
" model.fit(train_ui, alpha=alpha, beta=0)\n",
" reco=pd.DataFrame(model.recommend(user_code_id, item_code_id, topK=10))\n",
" estimations_df=pd.DataFrame(model.estimate(user_code_id, item_code_id, test_ui))\n",
" to_append=ev.evaluate(test=pd.read_csv('./Datasets/ml-100k/test.csv', sep='\\t', header=None),\n",
" estimations_df=estimations_df, \n",
" reco=np.array(reco),\n",
" super_reactions=[4,5])\n",
" to_append.insert(0, \"Alpha\", alpha)\n",
" result.append(to_append)\n",
" \n",
"result=pd.concat(result)\n",
"result"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"ename": "IndexError",
"evalue": "list index out of range",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-9-e01206177978>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmetrics\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 11\u001b[0m \u001b[0mdf\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Alpha'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmetrics\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 12\u001b[1;33m \u001b[0mdf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0maxes\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mto_iter\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmetrics\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mIndexError\u001b[0m: list index out of range"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1296x3024 with 18 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"metrics=list(result.columns[[i not in ['Alpha'] for i in result.columns]])\n",
"\n",
"charts_per_row=6\n",
"charts_per_column=3\n",
"\n",
"fig, axes = plt.subplots(nrows=charts_per_row, ncols=charts_per_column,figsize=(18, 7*charts_per_row ))\n",
"import itertools\n",
"to_iter=[i for i in itertools.product(range(charts_per_row), range(charts_per_column))]\n",
"\n",
"for i in range(len(metrics)):\n",
" df=result[['Alpha', metrics[i]]]\n",
" df.plot(ax=axes[to_iter[i]], title=metrics[i], x=0, y=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Beta"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"\n",
" 0%| | 0/10 [00:00<?, ?it/s]\u001b[A\u001b[A\n",
"\n",
"\n",
"943it [00:00, 10022.73it/s]\n",
"\n",
"\n",
" 10%|████████▎ | 1/10 [00:07<01:10, 7.79s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
"943it [00:00, 10353.16it/s]\n",
"\n",
"\n",
" 20%|████████████████▌ | 2/10 [00:15<01:02, 7.81s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
"943it [00:00, 10130.44it/s]\n",
"\n",
"\n",
" 30%|████████████████████████▉ | 3/10 [00:23<00:55, 7.86s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
"943it [00:00, 10535.95it/s]\n",
"\n",
"\n",
" 40%|█████████████████████████████████▏ | 4/10 [00:31<00:47, 7.93s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
"943it [00:00, 9917.28it/s]A\n",
"\n",
"\n",
" 50%|█████████████████████████████████████████▌ | 5/10 [00:39<00:39, 7.89s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
"943it [00:00, 10130.55it/s]\n",
"\n",
"\n",
" 60%|█████████████████████████████████████████████████▊ | 6/10 [00:47<00:31, 7.90s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
"943it [00:00, 10585.84it/s]\n",
"\n",
"\n",
" 70%|██████████████████████████████████████████████████████████ | 7/10 [00:55<00:23, 7.87s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
"943it [00:00, 9712.71it/s]A\n",
"\n",
"\n",
" 80%|██████████████████████████████████████████████████████████████████▍ | 8/10 [01:03<00:15, 7.89s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
"943it [00:00, 10673.59it/s]\n",
"\n",
"\n",
" 90%|██████████████████████████████████████████████████████████████████████████▋ | 9/10 [01:11<00:07, 7.91s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
"943it [00:00, 10468.25it/s]\n",
"\n",
"\n",
"100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [01:18<00:00, 7.89s/it]\u001b[A\u001b[A\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Beta</th>\n",
" <th>RMSE</th>\n",
" <th>MAE</th>\n",
" <th>precision</th>\n",
" <th>recall</th>\n",
" <th>F_1</th>\n",
" <th>F_05</th>\n",
" <th>precision_super</th>\n",
" <th>recall_super</th>\n",
" <th>NDCG</th>\n",
" <th>mAP</th>\n",
" <th>MRR</th>\n",
" <th>LAUC</th>\n",
" <th>HR</th>\n",
" <th>F_2</th>\n",
" <th>Whole_average</th>\n",
" <th>Reco in test</th>\n",
" <th>Test coverage</th>\n",
" <th>Shannon</th>\n",
" <th>Gini</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.0</td>\n",
" <td>3.702446</td>\n",
" <td>3.527273</td>\n",
" <td>0.282185</td>\n",
" <td>0.192092</td>\n",
" <td>0.186749</td>\n",
" <td>0.216980</td>\n",
" <td>0.204185</td>\n",
" <td>0.240096</td>\n",
" <td>0.339114</td>\n",
" <td>0.204905</td>\n",
" <td>0.572157</td>\n",
" <td>0.593544</td>\n",
" <td>0.875928</td>\n",
" <td>0.181702</td>\n",
" <td>0.340803</td>\n",
" <td>1.000000</td>\n",
" <td>0.077201</td>\n",
" <td>3.875892</td>\n",
" <td>0.974947</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.1</td>\n",
" <td>3.703312</td>\n",
" <td>3.528128</td>\n",
" <td>0.290138</td>\n",
" <td>0.197597</td>\n",
" <td>0.192259</td>\n",
" <td>0.223336</td>\n",
" <td>0.210944</td>\n",
" <td>0.246153</td>\n",
" <td>0.347768</td>\n",
" <td>0.212034</td>\n",
" <td>0.581038</td>\n",
" <td>0.596328</td>\n",
" <td>0.884411</td>\n",
" <td>0.187030</td>\n",
" <td>0.347420</td>\n",
" <td>1.000000</td>\n",
" <td>0.085137</td>\n",
" <td>3.957416</td>\n",
" <td>0.972784</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.2</td>\n",
" <td>3.703825</td>\n",
" <td>3.528636</td>\n",
" <td>0.297137</td>\n",
" <td>0.201202</td>\n",
" <td>0.196067</td>\n",
" <td>0.228169</td>\n",
" <td>0.218026</td>\n",
" <td>0.252767</td>\n",
" <td>0.355655</td>\n",
" <td>0.219909</td>\n",
" <td>0.588904</td>\n",
" <td>0.598160</td>\n",
" <td>0.886532</td>\n",
" <td>0.190538</td>\n",
" <td>0.352756</td>\n",
" <td>1.000000</td>\n",
" <td>0.094517</td>\n",
" <td>4.053212</td>\n",
" <td>0.969980</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.3</td>\n",
" <td>3.704130</td>\n",
" <td>3.528939</td>\n",
" <td>0.303499</td>\n",
" <td>0.204749</td>\n",
" <td>0.199901</td>\n",
" <td>0.232829</td>\n",
" <td>0.225107</td>\n",
" <td>0.260797</td>\n",
" <td>0.363757</td>\n",
" <td>0.226825</td>\n",
" <td>0.599969</td>\n",
" <td>0.599964</td>\n",
" <td>0.888653</td>\n",
" <td>0.194073</td>\n",
" <td>0.358344</td>\n",
" <td>1.000000</td>\n",
" <td>0.105339</td>\n",
" <td>4.147779</td>\n",
" <td>0.966948</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.4</td>\n",
" <td>3.704313</td>\n",
" <td>3.529120</td>\n",
" <td>0.308908</td>\n",
" <td>0.208811</td>\n",
" <td>0.203854</td>\n",
" <td>0.237241</td>\n",
" <td>0.229614</td>\n",
" <td>0.266918</td>\n",
" <td>0.370758</td>\n",
" <td>0.232673</td>\n",
" <td>0.609385</td>\n",
" <td>0.602014</td>\n",
" <td>0.895016</td>\n",
" <td>0.197981</td>\n",
" <td>0.363598</td>\n",
" <td>0.999894</td>\n",
" <td>0.132035</td>\n",
" <td>4.259682</td>\n",
" <td>0.962989</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.5</td>\n",
" <td>3.704422</td>\n",
" <td>3.529229</td>\n",
" <td>0.314316</td>\n",
" <td>0.211411</td>\n",
" <td>0.206768</td>\n",
" <td>0.240986</td>\n",
" <td>0.237124</td>\n",
" <td>0.273416</td>\n",
" <td>0.378307</td>\n",
" <td>0.239297</td>\n",
" <td>0.622792</td>\n",
" <td>0.603327</td>\n",
" <td>0.903499</td>\n",
" <td>0.200572</td>\n",
" <td>0.369318</td>\n",
" <td>0.999046</td>\n",
" <td>0.168831</td>\n",
" <td>4.411281</td>\n",
" <td>0.956648</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.6</td>\n",
" <td>3.704488</td>\n",
" <td>3.529295</td>\n",
" <td>0.314634</td>\n",
" <td>0.206209</td>\n",
" <td>0.204818</td>\n",
" <td>0.240159</td>\n",
" <td>0.242489</td>\n",
" <td>0.273850</td>\n",
" <td>0.376438</td>\n",
" <td>0.238428</td>\n",
" <td>0.622042</td>\n",
" <td>0.600721</td>\n",
" <td>0.897137</td>\n",
" <td>0.197320</td>\n",
" <td>0.367854</td>\n",
" <td>0.996394</td>\n",
" <td>0.212843</td>\n",
" <td>4.621938</td>\n",
" <td>0.945932</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.7</td>\n",
" <td>3.704528</td>\n",
" <td>3.529335</td>\n",
" <td>0.304136</td>\n",
" <td>0.187298</td>\n",
" <td>0.191990</td>\n",
" <td>0.228749</td>\n",
" <td>0.238305</td>\n",
" <td>0.256201</td>\n",
" <td>0.358807</td>\n",
" <td>0.226808</td>\n",
" <td>0.593897</td>\n",
" <td>0.591207</td>\n",
" <td>0.868505</td>\n",
" <td>0.182056</td>\n",
" <td>0.352330</td>\n",
" <td>0.983033</td>\n",
" <td>0.256854</td>\n",
" <td>4.898568</td>\n",
" <td>0.928065</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.8</td>\n",
" <td>3.704552</td>\n",
" <td>3.529360</td>\n",
" <td>0.266384</td>\n",
" <td>0.147571</td>\n",
" <td>0.158660</td>\n",
" <td>0.194838</td>\n",
" <td>0.214485</td>\n",
" <td>0.209336</td>\n",
" <td>0.299850</td>\n",
" <td>0.184356</td>\n",
" <td>0.492852</td>\n",
" <td>0.571152</td>\n",
" <td>0.803818</td>\n",
" <td>0.146414</td>\n",
" <td>0.307476</td>\n",
" <td>0.936373</td>\n",
" <td>0.341270</td>\n",
" <td>5.257397</td>\n",
" <td>0.895882</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.9</td>\n",
" <td>3.704567</td>\n",
" <td>3.529375</td>\n",
" <td>0.162354</td>\n",
" <td>0.076967</td>\n",
" <td>0.089233</td>\n",
" <td>0.114583</td>\n",
" <td>0.134657</td>\n",
" <td>0.113253</td>\n",
" <td>0.160868</td>\n",
" <td>0.085486</td>\n",
" <td>0.243590</td>\n",
" <td>0.535405</td>\n",
" <td>0.580064</td>\n",
" <td>0.078906</td>\n",
" <td>0.197947</td>\n",
" <td>0.800106</td>\n",
" <td>0.415584</td>\n",
" <td>5.563910</td>\n",
" <td>0.857396</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Beta RMSE MAE precision recall F_1 F_05 \\\n",
"0 0.0 3.702446 3.527273 0.282185 0.192092 0.186749 0.216980 \n",
"0 0.1 3.703312 3.528128 0.290138 0.197597 0.192259 0.223336 \n",
"0 0.2 3.703825 3.528636 0.297137 0.201202 0.196067 0.228169 \n",
"0 0.3 3.704130 3.528939 0.303499 0.204749 0.199901 0.232829 \n",
"0 0.4 3.704313 3.529120 0.308908 0.208811 0.203854 0.237241 \n",
"0 0.5 3.704422 3.529229 0.314316 0.211411 0.206768 0.240986 \n",
"0 0.6 3.704488 3.529295 0.314634 0.206209 0.204818 0.240159 \n",
"0 0.7 3.704528 3.529335 0.304136 0.187298 0.191990 0.228749 \n",
"0 0.8 3.704552 3.529360 0.266384 0.147571 0.158660 0.194838 \n",
"0 0.9 3.704567 3.529375 0.162354 0.076967 0.089233 0.114583 \n",
"\n",
" precision_super recall_super NDCG mAP MRR LAUC \\\n",
"0 0.204185 0.240096 0.339114 0.204905 0.572157 0.593544 \n",
"0 0.210944 0.246153 0.347768 0.212034 0.581038 0.596328 \n",
"0 0.218026 0.252767 0.355655 0.219909 0.588904 0.598160 \n",
"0 0.225107 0.260797 0.363757 0.226825 0.599969 0.599964 \n",
"0 0.229614 0.266918 0.370758 0.232673 0.609385 0.602014 \n",
"0 0.237124 0.273416 0.378307 0.239297 0.622792 0.603327 \n",
"0 0.242489 0.273850 0.376438 0.238428 0.622042 0.600721 \n",
"0 0.238305 0.256201 0.358807 0.226808 0.593897 0.591207 \n",
"0 0.214485 0.209336 0.299850 0.184356 0.492852 0.571152 \n",
"0 0.134657 0.113253 0.160868 0.085486 0.243590 0.535405 \n",
"\n",
" HR F_2 Whole_average Reco in test Test coverage Shannon \\\n",
"0 0.875928 0.181702 0.340803 1.000000 0.077201 3.875892 \n",
"0 0.884411 0.187030 0.347420 1.000000 0.085137 3.957416 \n",
"0 0.886532 0.190538 0.352756 1.000000 0.094517 4.053212 \n",
"0 0.888653 0.194073 0.358344 1.000000 0.105339 4.147779 \n",
"0 0.895016 0.197981 0.363598 0.999894 0.132035 4.259682 \n",
"0 0.903499 0.200572 0.369318 0.999046 0.168831 4.411281 \n",
"0 0.897137 0.197320 0.367854 0.996394 0.212843 4.621938 \n",
"0 0.868505 0.182056 0.352330 0.983033 0.256854 4.898568 \n",
"0 0.803818 0.146414 0.307476 0.936373 0.341270 5.257397 \n",
"0 0.580064 0.078906 0.197947 0.800106 0.415584 5.563910 \n",
"\n",
" Gini \n",
"0 0.974947 \n",
"0 0.972784 \n",
"0 0.969980 \n",
"0 0.966948 \n",
"0 0.962989 \n",
"0 0.956648 \n",
"0 0.945932 \n",
"0 0.928065 \n",
"0 0.895882 \n",
"0 0.857396 "
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from tqdm import tqdm\n",
"result=[]\n",
"for beta in tqdm([round(i,1) for i in np.arange(0,1,0.1)]):\n",
" model=RP3Beta()\n",
" model.fit(train_ui, alpha=1, beta=beta)\n",
" reco=pd.DataFrame(model.recommend(user_code_id, item_code_id, topK=10))\n",
" estimations_df=pd.DataFrame(model.estimate(user_code_id, item_code_id, test_ui))\n",
" to_append=ev.evaluate(test=pd.read_csv('./Datasets/ml-100k/test.csv', sep='\\t', header=None),\n",
" estimations_df=estimations_df, \n",
" reco=np.array(reco),\n",
" super_reactions=[4,5])\n",
" to_append.insert(0, \"Beta\", beta)\n",
" result.append(to_append)\n",
" \n",
"result=pd.concat(result)\n",
"result"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"ename": "IndexError",
"evalue": "list index out of range",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-20-8f1dc184fb30>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 12\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmetrics\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[0mdf\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Beta'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmetrics\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 14\u001b[1;33m \u001b[0mdf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0maxes\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mto_iter\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmetrics\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mIndexError\u001b[0m: list index out of range"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1296x3024 with 18 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"### import matplotlib.pyplot as plt\n",
"\n",
"metrics=list(result.columns[[i not in ['Beta'] for i in result.columns]])\n",
"\n",
"charts_per_row=6\n",
"charts_per_column=3\n",
"\n",
"fig, axes = plt.subplots(nrows=charts_per_row, ncols=charts_per_column,figsize=(18, 7*charts_per_row ))\n",
"import itertools\n",
"to_iter=[i for i in itertools.product(range(charts_per_row), range(charts_per_column))]\n",
"\n",
"for i in range(len(metrics)):\n",
" df=result[['Beta', metrics[i]]]\n",
" df.plot(ax=axes[to_iter[i]], title=metrics[i], x=0, y=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Check sample recommendations"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>user</th>\n",
" <th>rating</th>\n",
" <th>title</th>\n",
" <th>genres</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>24400</th>\n",
" <td>162</td>\n",
" <td>5</td>\n",
" <td>People vs. Larry Flynt, The (1996)</td>\n",
" <td>Drama</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2968</th>\n",
" <td>162</td>\n",
" <td>5</td>\n",
" <td>Star Wars (1977)</td>\n",
" <td>Action, Adventure, Romance, Sci-Fi, War</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53325</th>\n",
" <td>162</td>\n",
" <td>5</td>\n",
" <td>Multiplicity (1996)</td>\n",
" <td>Comedy</td>\n",
" </tr>\n",
" <tr>\n",
" <th>338</th>\n",
" <td>162</td>\n",
" <td>4</td>\n",
" <td>Toy Story (1995)</td>\n",
" <td>Animation, Children's, Comedy</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75614</th>\n",
" <td>162</td>\n",
" <td>4</td>\n",
" <td>Things to Do in Denver when You're Dead (1995)</td>\n",
" <td>Crime, Drama, Romance</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62014</th>\n",
" <td>162</td>\n",
" <td>4</td>\n",
" <td>Private Parts (1997)</td>\n",
" <td>Comedy, Drama</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55054</th>\n",
" <td>162</td>\n",
" <td>4</td>\n",
" <td>Long Kiss Goodnight, The (1996)</td>\n",
" <td>Action, Thriller</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44658</th>\n",
" <td>162</td>\n",
" <td>4</td>\n",
" <td>Ransom (1996)</td>\n",
" <td>Drama, Thriller</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39354</th>\n",
" <td>162</td>\n",
" <td>4</td>\n",
" <td>Sleepers (1996)</td>\n",
" <td>Crime, Drama</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31559</th>\n",
" <td>162</td>\n",
" <td>4</td>\n",
" <td>Seven (Se7en) (1995)</td>\n",
" <td>Crime, Thriller</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30151</th>\n",
" <td>162</td>\n",
" <td>4</td>\n",
" <td>Star Trek: First Contact (1996)</td>\n",
" <td>Action, Adventure, Sci-Fi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28434</th>\n",
" <td>162</td>\n",
" <td>4</td>\n",
" <td>2 Days in the Valley (1996)</td>\n",
" <td>Crime</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28048</th>\n",
" <td>162</td>\n",
" <td>4</td>\n",
" <td>Face/Off (1997)</td>\n",
" <td>Action, Sci-Fi, Thriller</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76062</th>\n",
" <td>162</td>\n",
" <td>4</td>\n",
" <td>Killing Zoe (1994)</td>\n",
" <td>Thriller</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4876</th>\n",
" <td>162</td>\n",
" <td>4</td>\n",
" <td>Rock, The (1996)</td>\n",
" <td>Action, Adventure, Thriller</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" user rating title \\\n",
"24400 162 5 People vs. Larry Flynt, The (1996) \n",
"2968 162 5 Star Wars (1977) \n",
"53325 162 5 Multiplicity (1996) \n",
"338 162 4 Toy Story (1995) \n",
"75614 162 4 Things to Do in Denver when You're Dead (1995) \n",
"62014 162 4 Private Parts (1997) \n",
"55054 162 4 Long Kiss Goodnight, The (1996) \n",
"44658 162 4 Ransom (1996) \n",
"39354 162 4 Sleepers (1996) \n",
"31559 162 4 Seven (Se7en) (1995) \n",
"30151 162 4 Star Trek: First Contact (1996) \n",
"28434 162 4 2 Days in the Valley (1996) \n",
"28048 162 4 Face/Off (1997) \n",
"76062 162 4 Killing Zoe (1994) \n",
"4876 162 4 Rock, The (1996) \n",
"\n",
" genres \n",
"24400 Drama \n",
"2968 Action, Adventure, Romance, Sci-Fi, War \n",
"53325 Comedy \n",
"338 Animation, Children's, Comedy \n",
"75614 Crime, Drama, Romance \n",
"62014 Comedy, Drama \n",
"55054 Action, Thriller \n",
"44658 Drama, Thriller \n",
"39354 Crime, Drama \n",
"31559 Crime, Thriller \n",
"30151 Action, Adventure, Sci-Fi \n",
"28434 Crime \n",
"28048 Action, Sci-Fi, Thriller \n",
"76062 Thriller \n",
"4876 Action, Adventure, Thriller "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>user</th>\n",
" <th>rec_nb</th>\n",
" <th>title</th>\n",
" <th>genres</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>6985</th>\n",
" <td>162.0</td>\n",
" <td>1</td>\n",
" <td>Fargo (1996)</td>\n",
" <td>Crime, Drama, Thriller</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5656</th>\n",
" <td>162.0</td>\n",
" <td>2</td>\n",
" <td>Contact (1997)</td>\n",
" <td>Drama, Sci-Fi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2253</th>\n",
" <td>162.0</td>\n",
" <td>3</td>\n",
" <td>Godfather, The (1972)</td>\n",
" <td>Action, Crime, Drama</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8472</th>\n",
" <td>162.0</td>\n",
" <td>4</td>\n",
" <td>Independence Day (ID4) (1996)</td>\n",
" <td>Action, Sci-Fi, War</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1727</th>\n",
" <td>162.0</td>\n",
" <td>5</td>\n",
" <td>Scream (1996)</td>\n",
" <td>Horror, Thriller</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4478</th>\n",
" <td>162.0</td>\n",
" <td>6</td>\n",
" <td>Air Force One (1997)</td>\n",
" <td>Action, Thriller</td>\n",
" </tr>\n",
" <tr>\n",
" <th>728</th>\n",
" <td>162.0</td>\n",
" <td>7</td>\n",
" <td>Silence of the Lambs, The (1991)</td>\n",
" <td>Drama, Thriller</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9100</th>\n",
" <td>162.0</td>\n",
" <td>8</td>\n",
" <td>Mission: Impossible (1996)</td>\n",
" <td>Action, Adventure, Mystery</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8822</th>\n",
" <td>162.0</td>\n",
" <td>9</td>\n",
" <td>Men in Black (1997)</td>\n",
" <td>Action, Adventure, Comedy, Sci-Fi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6382</th>\n",
" <td>162.0</td>\n",
" <td>10</td>\n",
" <td>Pulp Fiction (1994)</td>\n",
" <td>Crime, Drama</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" user rec_nb title \\\n",
"6985 162.0 1 Fargo (1996) \n",
"5656 162.0 2 Contact (1997) \n",
"2253 162.0 3 Godfather, The (1972) \n",
"8472 162.0 4 Independence Day (ID4) (1996) \n",
"1727 162.0 5 Scream (1996) \n",
"4478 162.0 6 Air Force One (1997) \n",
"728 162.0 7 Silence of the Lambs, The (1991) \n",
"9100 162.0 8 Mission: Impossible (1996) \n",
"8822 162.0 9 Men in Black (1997) \n",
"6382 162.0 10 Pulp Fiction (1994) \n",
"\n",
" genres \n",
"6985 Crime, Drama, Thriller \n",
"5656 Drama, Sci-Fi \n",
"2253 Action, Crime, Drama \n",
"8472 Action, Sci-Fi, War \n",
"1727 Horror, Thriller \n",
"4478 Action, Thriller \n",
"728 Drama, Thriller \n",
"9100 Action, Adventure, Mystery \n",
"8822 Action, Adventure, Comedy, Sci-Fi \n",
"6382 Crime, Drama "
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train=pd.read_csv('./Datasets/ml-100k/train.csv', sep='\\t', header=None, names=['user', 'item', 'rating', 'timestamp'])\n",
"items=pd.read_csv('./Datasets/ml-100k/movies.csv')\n",
"\n",
"user=random.choice(list(set(train['user'])))\n",
"\n",
"train_content=pd.merge(train, items, left_on='item', right_on='id')\n",
"display(train_content[train_content['user']==user][['user', 'rating', 'title', 'genres']]\\\n",
" .sort_values(by='rating', ascending=False)[:15])\n",
"\n",
"reco = np.loadtxt('Recommendations generated/ml-100k/Self_P3_reco.csv', delimiter=',')\n",
"items=pd.read_csv('./Datasets/ml-100k/movies.csv')\n",
"\n",
"# Let's ignore scores - they are not used in evaluation: \n",
"reco_users=reco[:,:1]\n",
"reco_items=reco[:,1::2]\n",
"# Let's put them into one array\n",
"reco=np.concatenate((reco_users, reco_items), axis=1)\n",
"\n",
"# Let's rebuild it user-item dataframe\n",
"recommended=[]\n",
"for row in reco:\n",
" for rec_nb, entry in enumerate(row[1:]):\n",
" recommended.append((row[0], rec_nb+1, entry))\n",
"recommended=pd.DataFrame(recommended, columns=['user','rec_nb', 'item'])\n",
"\n",
"recommended_content=pd.merge(recommended, items, left_on='item', right_on='id')\n",
"recommended_content[recommended_content['user']==user][['user', 'rec_nb', 'title', 'genres']].sort_values(by='rec_nb')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# project task 6: generate recommendations of RP3Beta for hiperparameters found to optimize recall"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"\n",
" 0%| | 0/8 [00:00<?, ?it/s]\u001b[A\u001b[A\n",
"\n",
"\n",
" 0%| | 0/10 [00:00<?, ?it/s]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10468.33it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 10%|████████▎ | 1/10 [00:07<01:09, 7.72s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10468.25it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 20%|████████████████▌ | 2/10 [00:15<01:01, 7.73s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 9917.23it/s]A\u001b[A\n",
"\n",
"\n",
"\n",
" 30%|████████████████████████▉ | 3/10 [00:23<00:54, 7.76s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10280.82it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 40%|█████████████████████████████████▏ | 4/10 [00:31<00:46, 7.75s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10130.05it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 50%|█████████████████████████████████████████▌ | 5/10 [00:39<00:39, 7.82s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10353.30it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 60%|█████████████████████████████████████████████████▊ | 6/10 [00:46<00:31, 7.86s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 9969.25it/s]A\u001b[A\n",
"\n",
"\n",
"\n",
" 70%|██████████████████████████████████████████████████████████ | 7/10 [00:54<00:23, 7.82s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10130.65it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 80%|██████████████████████████████████████████████████████████████████▍ | 8/10 [01:02<00:15, 7.80s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10240.71it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 90%|██████████████████████████████████████████████████████████████████████████▋ | 9/10 [01:10<00:07, 7.82s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 11559.22it/s]\u001b[A\n",
"\n",
"\n",
"\n",
"100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [01:18<00:00, 7.82s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
" 12%|██████████▌ | 1/8 [01:18<09:07, 78.21s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
" 0%| | 0/10 [00:00<?, ?it/s]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10586.57it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 10%|████████▎ | 1/10 [00:08<01:12, 8.08s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10200.38it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 20%|████████████████▌ | 2/10 [00:16<01:04, 8.05s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10179.46it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 30%|████████████████████████▉ | 3/10 [00:24<00:56, 8.07s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10022.70it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 40%|█████████████████████████████████▏ | 4/10 [00:32<00:48, 8.04s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10367.46it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 50%|█████████████████████████████████████████▌ | 5/10 [00:40<00:40, 8.06s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10467.50it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 60%|█████████████████████████████████████████████████▊ | 6/10 [00:48<00:31, 7.99s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10130.49it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 70%|██████████████████████████████████████████████████████████ | 7/10 [00:56<00:23, 7.98s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10364.75it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 80%|██████████████████████████████████████████████████████████████████▍ | 8/10 [01:04<00:16, 8.03s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10240.52it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 90%|██████████████████████████████████████████████████████████████████████████▋ | 9/10 [01:12<00:08, 8.00s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 11256.66it/s]\u001b[A\n",
"\n",
"\n",
"\n",
"100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [01:20<00:00, 8.00s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
" 25%|█████████████████████ | 2/8 [02:38<07:52, 78.75s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
" 0%| | 0/10 [00:00<?, ?it/s]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10408.58it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 10%|████████▎ | 1/10 [00:07<01:10, 7.78s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10130.60it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 20%|████████████████▌ | 2/10 [00:15<01:02, 7.86s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10376.19it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 30%|████████████████████████▉ | 3/10 [00:23<00:54, 7.86s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10240.82it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 40%|█████████████████████████████████▏ | 4/10 [00:31<00:47, 7.88s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10526.31it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 50%|█████████████████████████████████████████▌ | 5/10 [00:39<00:39, 7.88s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10240.84it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 60%|█████████████████████████████████████████████████▊ | 6/10 [00:47<00:31, 7.88s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10240.66it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 70%|██████████████████████████████████████████████████████████ | 7/10 [00:55<00:23, 7.91s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 9813.25it/s]A\u001b[A\n",
"\n",
"\n",
"\n",
" 80%|██████████████████████████████████████████████████████████████████▍ | 8/10 [01:03<00:15, 7.93s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10240.74it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 90%|██████████████████████████████████████████████████████████████████████████▋ | 9/10 [01:11<00:07, 7.94s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10766.86it/s]\u001b[A\n",
"\n",
"\n",
"\n",
"100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [01:19<00:00, 7.93s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
" 38%|███████████████████████████████▌ | 3/8 [03:57<06:34, 78.90s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
" 0%| | 0/10 [00:00<?, ?it/s]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10240.76it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 10%|████████▎ | 1/10 [00:07<01:10, 7.81s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10130.62it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 20%|████████████████▌ | 2/10 [00:15<01:02, 7.81s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10402.67it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 30%|████████████████████████▉ | 3/10 [00:23<00:54, 7.82s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10352.97it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 40%|█████████████████████████████████▏ | 4/10 [00:31<00:47, 7.92s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10468.36it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 50%|█████████████████████████████████████████▌ | 5/10 [00:39<00:39, 7.97s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10130.62it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 60%|█████████████████████████████████████████████████▊ | 6/10 [00:47<00:31, 7.98s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10353.24it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 70%|██████████████████████████████████████████████████████████ | 7/10 [00:55<00:23, 7.95s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10022.85it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 80%|██████████████████████████████████████████████████████████████████▍ | 8/10 [01:03<00:15, 7.96s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10392.28it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 90%|██████████████████████████████████████████████████████████████████████████▋ | 9/10 [01:11<00:07, 7.95s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 11083.95it/s]\u001b[A\n",
"\n",
"\n",
"\n",
"100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [01:19<00:00, 7.95s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
" 50%|██████████████████████████████████████████ | 4/8 [05:16<05:16, 79.07s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
" 0%| | 0/10 [00:00<?, ?it/s]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10130.65it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 10%|████████▎ | 1/10 [00:08<01:12, 8.05s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10024.91it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 20%|████████████████▌ | 2/10 [00:16<01:04, 8.07s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10130.55it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 30%|████████████████████████▉ | 3/10 [00:23<00:55, 7.99s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10130.60it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 40%|█████████████████████████████████▏ | 4/10 [00:32<00:48, 8.04s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10240.63it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 50%|█████████████████████████████████████████▌ | 5/10 [00:40<00:40, 8.00s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10130.31it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 60%|█████████████████████████████████████████████████▊ | 6/10 [00:47<00:31, 7.98s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10240.71it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 70%|██████████████████████████████████████████████████████████ | 7/10 [00:55<00:23, 7.91s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10237.93it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 80%|██████████████████████████████████████████████████████████████████▍ | 8/10 [01:03<00:15, 7.88s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"0it [00:00, ?it/s]\u001b[A\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 8192.56it/s]\u001b[A\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
" 90%|██████████████████████████████████████████████████████████████████████████▋ | 9/10 [01:11<00:07, 7.89s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10828.06it/s]\u001b[A\n",
"\n",
"\n",
"\n",
"100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [01:19<00:00, 7.93s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
" 62%|████████████████████████████████████████████████████▌ | 5/8 [06:36<03:57, 79.14s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
" 0%| | 0/10 [00:00<?, ?it/s]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10130.65it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 10%|████████▎ | 1/10 [00:08<01:12, 8.08s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10467.47it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 20%|████████████████▌ | 2/10 [00:16<01:04, 8.09s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10468.19it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 30%|████████████████████████▉ | 3/10 [00:24<00:56, 8.04s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10353.30it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 40%|█████████████████████████████████▏ | 4/10 [00:32<00:48, 8.01s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10022.90it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 50%|█████████████████████████████████████████▌ | 5/10 [00:39<00:39, 7.96s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10130.62it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 60%|█████████████████████████████████████████████████▊ | 6/10 [00:47<00:31, 7.97s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10443.40it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 70%|██████████████████████████████████████████████████████████ | 7/10 [00:56<00:24, 8.02s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10304.15it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 80%|██████████████████████████████████████████████████████████████████▍ | 8/10 [01:03<00:15, 8.00s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10955.25it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 90%|██████████████████████████████████████████████████████████████████████████▋ | 9/10 [01:11<00:07, 7.99s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10829.30it/s]\u001b[A\n",
"\n",
"\n",
"\n",
"100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [01:19<00:00, 7.98s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
" 75%|███████████████████████████████████████████████████████████████ | 6/8 [07:56<02:38, 79.34s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
" 0%| | 0/10 [00:00<?, ?it/s]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10353.22it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 10%|████████▎ | 1/10 [00:07<01:11, 7.94s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10585.95it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 20%|████████████████▌ | 2/10 [00:15<01:03, 7.92s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10353.30it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 30%|████████████████████████▉ | 3/10 [00:23<00:55, 7.92s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10353.27it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 40%|█████████████████████████████████▏ | 4/10 [00:31<00:47, 7.94s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"0it [00:00, ?it/s]\u001b[A\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 8888.23it/s]\u001b[A\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
" 50%|█████████████████████████████████████████▌ | 5/10 [00:39<00:39, 7.92s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10585.89it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 60%|█████████████████████████████████████████████████▊ | 6/10 [00:47<00:31, 7.90s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10645.01it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 70%|██████████████████████████████████████████████████████████ | 7/10 [00:55<00:23, 7.91s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10829.21it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 80%|██████████████████████████████████████████████████████████████████▍ | 8/10 [01:03<00:15, 7.91s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10586.69it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 90%|██████████████████████████████████████████████████████████████████████████▋ | 9/10 [01:11<00:07, 7.95s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 11215.99it/s]\u001b[A\n",
"\n",
"\n",
"\n",
"100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [01:19<00:00, 7.91s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
" 88%|█████████████████████████████████████████████████████████████████████████▌ | 7/8 [09:15<01:19, 79.28s/it]\u001b[A\u001b[A\n",
"\n",
"\n",
" 0%| | 0/10 [00:00<?, ?it/s]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10585.95it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 10%|████████▎ | 1/10 [00:07<01:09, 7.74s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10022.85it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 20%|████████████████▌ | 2/10 [00:15<01:02, 7.78s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10353.30it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 30%|████████████████████████▉ | 3/10 [00:23<00:54, 7.79s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10585.95it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 40%|█████████████████████████████████▏ | 4/10 [00:31<00:46, 7.81s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10130.68it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 50%|█████████████████████████████████████████▌ | 5/10 [00:39<00:39, 7.81s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10829.21it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 60%|█████████████████████████████████████████████████▊ | 6/10 [00:47<00:31, 7.87s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"0it [00:00, ?it/s]\u001b[A\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 7566.43it/s]\u001b[A\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
" 70%|██████████████████████████████████████████████████████████ | 7/10 [00:55<00:23, 7.88s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10955.22it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 80%|██████████████████████████████████████████████████████████████████▍ | 8/10 [01:02<00:15, 7.89s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 10829.12it/s]\u001b[A\n",
"\n",
"\n",
"\n",
" 90%|██████████████████████████████████████████████████████████████████████████▋ | 9/10 [01:10<00:07, 7.91s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"\n",
"943it [00:00, 11925.95it/s]\u001b[A\n",
"\n",
"\n",
"\n",
"100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [01:18<00:00, 7.89s/it]\u001b[A\u001b[A\u001b[A\n",
"\n",
"\n",
"100%|████████████████████████████████████████████████████████████████████████████████████| 8/8 [10:34<00:00, 79.26s/it]\u001b[A\u001b[A\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Beta</th>\n",
" <th>Alpha</th>\n",
" <th>RMSE</th>\n",
" <th>MAE</th>\n",
" <th>precision</th>\n",
" <th>recall</th>\n",
" <th>F_1</th>\n",
" <th>F_05</th>\n",
" <th>precision_super</th>\n",
" <th>recall_super</th>\n",
" <th>...</th>\n",
" <th>mAP</th>\n",
" <th>MRR</th>\n",
" <th>LAUC</th>\n",
" <th>HR</th>\n",
" <th>F_2</th>\n",
" <th>Whole_average</th>\n",
" <th>Reco in test</th>\n",
" <th>Test coverage</th>\n",
" <th>Shannon</th>\n",
" <th>Gini</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.0</td>\n",
" <td>0.2</td>\n",
" <td>268.177832</td>\n",
" <td>211.732649</td>\n",
" <td>0.262672</td>\n",
" <td>0.166858</td>\n",
" <td>0.166277</td>\n",
" <td>0.197184</td>\n",
" <td>0.187661</td>\n",
" <td>0.203252</td>\n",
" <td>...</td>\n",
" <td>0.196132</td>\n",
" <td>0.563378</td>\n",
" <td>0.580866</td>\n",
" <td>0.850477</td>\n",
" <td>0.159293</td>\n",
" <td>0.321247</td>\n",
" <td>1.000000</td>\n",
" <td>0.060606</td>\n",
" <td>3.669627</td>\n",
" <td>0.979636</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.1</td>\n",
" <td>0.2</td>\n",
" <td>157.599233</td>\n",
" <td>126.908903</td>\n",
" <td>0.270201</td>\n",
" <td>0.172173</td>\n",
" <td>0.171630</td>\n",
" <td>0.203289</td>\n",
" <td>0.193455</td>\n",
" <td>0.210058</td>\n",
" <td>...</td>\n",
" <td>0.204201</td>\n",
" <td>0.574015</td>\n",
" <td>0.583558</td>\n",
" <td>0.854719</td>\n",
" <td>0.164471</td>\n",
" <td>0.327693</td>\n",
" <td>1.000000</td>\n",
" <td>0.069264</td>\n",
" <td>3.755959</td>\n",
" <td>0.977793</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.2</td>\n",
" <td>0.2</td>\n",
" <td>92.637651</td>\n",
" <td>75.868627</td>\n",
" <td>0.276776</td>\n",
" <td>0.176262</td>\n",
" <td>0.175719</td>\n",
" <td>0.208241</td>\n",
" <td>0.198712</td>\n",
" <td>0.215199</td>\n",
" <td>...</td>\n",
" <td>0.212735</td>\n",
" <td>0.586185</td>\n",
" <td>0.585642</td>\n",
" <td>0.856840</td>\n",
" <td>0.168325</td>\n",
" <td>0.333365</td>\n",
" <td>1.000000</td>\n",
" <td>0.073593</td>\n",
" <td>3.853614</td>\n",
" <td>0.975477</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.3</td>\n",
" <td>0.2</td>\n",
" <td>54.292373</td>\n",
" <td>45.040060</td>\n",
" <td>0.285366</td>\n",
" <td>0.186535</td>\n",
" <td>0.183212</td>\n",
" <td>0.215805</td>\n",
" <td>0.206330</td>\n",
" <td>0.228824</td>\n",
" <td>...</td>\n",
" <td>0.221257</td>\n",
" <td>0.599301</td>\n",
" <td>0.590800</td>\n",
" <td>0.866384</td>\n",
" <td>0.176715</td>\n",
" <td>0.342608</td>\n",
" <td>1.000000</td>\n",
" <td>0.080087</td>\n",
" <td>3.975583</td>\n",
" <td>0.972148</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.4</td>\n",
" <td>0.2</td>\n",
" <td>31.548217</td>\n",
" <td>26.348648</td>\n",
" <td>0.294168</td>\n",
" <td>0.195917</td>\n",
" <td>0.190517</td>\n",
" <td>0.223387</td>\n",
" <td>0.212339</td>\n",
" <td>0.237213</td>\n",
" <td>...</td>\n",
" <td>0.232274</td>\n",
" <td>0.613992</td>\n",
" <td>0.595531</td>\n",
" <td>0.873807</td>\n",
" <td>0.184624</td>\n",
" <td>0.351439</td>\n",
" <td>1.000000</td>\n",
" <td>0.090909</td>\n",
" <td>4.135455</td>\n",
" <td>0.967171</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.5</td>\n",
" <td>1.6</td>\n",
" <td>3.704592</td>\n",
" <td>3.529400</td>\n",
" <td>0.252810</td>\n",
" <td>0.168829</td>\n",
" <td>0.166131</td>\n",
" <td>0.193923</td>\n",
" <td>0.194099</td>\n",
" <td>0.222324</td>\n",
" <td>...</td>\n",
" <td>0.172320</td>\n",
" <td>0.507818</td>\n",
" <td>0.581757</td>\n",
" <td>0.832450</td>\n",
" <td>0.160691</td>\n",
" <td>0.312473</td>\n",
" <td>0.978685</td>\n",
" <td>0.324675</td>\n",
" <td>4.885124</td>\n",
" <td>0.923658</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.6</td>\n",
" <td>1.6</td>\n",
" <td>3.704592</td>\n",
" <td>3.529400</td>\n",
" <td>0.232344</td>\n",
" <td>0.149823</td>\n",
" <td>0.149912</td>\n",
" <td>0.176682</td>\n",
" <td>0.182618</td>\n",
" <td>0.202454</td>\n",
" <td>...</td>\n",
" <td>0.149266</td>\n",
" <td>0.447627</td>\n",
" <td>0.572141</td>\n",
" <td>0.793213</td>\n",
" <td>0.143766</td>\n",
" <td>0.288652</td>\n",
" <td>0.956734</td>\n",
" <td>0.375180</td>\n",
" <td>5.163474</td>\n",
" <td>0.899700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.7</td>\n",
" <td>1.6</td>\n",
" <td>3.704592</td>\n",
" <td>3.529400</td>\n",
" <td>0.190668</td>\n",
" <td>0.114377</td>\n",
" <td>0.119136</td>\n",
" <td>0.142966</td>\n",
" <td>0.153433</td>\n",
" <td>0.156962</td>\n",
" <td>...</td>\n",
" <td>0.108990</td>\n",
" <td>0.338688</td>\n",
" <td>0.554239</td>\n",
" <td>0.714740</td>\n",
" <td>0.112032</td>\n",
" <td>0.242561</td>\n",
" <td>0.917391</td>\n",
" <td>0.422799</td>\n",
" <td>5.439353</td>\n",
" <td>0.871133</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.8</td>\n",
" <td>1.6</td>\n",
" <td>3.704592</td>\n",
" <td>3.529400</td>\n",
" <td>0.128420</td>\n",
" <td>0.074778</td>\n",
" <td>0.078618</td>\n",
" <td>0.095479</td>\n",
" <td>0.104614</td>\n",
" <td>0.104027</td>\n",
" <td>...</td>\n",
" <td>0.058852</td>\n",
" <td>0.195718</td>\n",
" <td>0.534170</td>\n",
" <td>0.576882</td>\n",
" <td>0.073268</td>\n",
" <td>0.179234</td>\n",
" <td>0.848993</td>\n",
" <td>0.461760</td>\n",
" <td>5.645544</td>\n",
" <td>0.844059</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.9</td>\n",
" <td>1.6</td>\n",
" <td>3.704592</td>\n",
" <td>3.529400</td>\n",
" <td>0.053128</td>\n",
" <td>0.032647</td>\n",
" <td>0.034075</td>\n",
" <td>0.040718</td>\n",
" <td>0.042060</td>\n",
" <td>0.041190</td>\n",
" <td>...</td>\n",
" <td>0.016389</td>\n",
" <td>0.070535</td>\n",
" <td>0.512829</td>\n",
" <td>0.318134</td>\n",
" <td>0.032001</td>\n",
" <td>0.103351</td>\n",
" <td>0.751856</td>\n",
" <td>0.458874</td>\n",
" <td>5.549901</td>\n",
" <td>0.851786</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>80 rows × 21 columns</p>\n",
"</div>"
],
"text/plain": [
" Beta Alpha RMSE MAE precision recall F_1 \\\n",
"0 0.0 0.2 268.177832 211.732649 0.262672 0.166858 0.166277 \n",
"0 0.1 0.2 157.599233 126.908903 0.270201 0.172173 0.171630 \n",
"0 0.2 0.2 92.637651 75.868627 0.276776 0.176262 0.175719 \n",
"0 0.3 0.2 54.292373 45.040060 0.285366 0.186535 0.183212 \n",
"0 0.4 0.2 31.548217 26.348648 0.294168 0.195917 0.190517 \n",
".. ... ... ... ... ... ... ... \n",
"0 0.5 1.6 3.704592 3.529400 0.252810 0.168829 0.166131 \n",
"0 0.6 1.6 3.704592 3.529400 0.232344 0.149823 0.149912 \n",
"0 0.7 1.6 3.704592 3.529400 0.190668 0.114377 0.119136 \n",
"0 0.8 1.6 3.704592 3.529400 0.128420 0.074778 0.078618 \n",
"0 0.9 1.6 3.704592 3.529400 0.053128 0.032647 0.034075 \n",
"\n",
" F_05 precision_super recall_super ... mAP MRR \\\n",
"0 0.197184 0.187661 0.203252 ... 0.196132 0.563378 \n",
"0 0.203289 0.193455 0.210058 ... 0.204201 0.574015 \n",
"0 0.208241 0.198712 0.215199 ... 0.212735 0.586185 \n",
"0 0.215805 0.206330 0.228824 ... 0.221257 0.599301 \n",
"0 0.223387 0.212339 0.237213 ... 0.232274 0.613992 \n",
".. ... ... ... ... ... ... \n",
"0 0.193923 0.194099 0.222324 ... 0.172320 0.507818 \n",
"0 0.176682 0.182618 0.202454 ... 0.149266 0.447627 \n",
"0 0.142966 0.153433 0.156962 ... 0.108990 0.338688 \n",
"0 0.095479 0.104614 0.104027 ... 0.058852 0.195718 \n",
"0 0.040718 0.042060 0.041190 ... 0.016389 0.070535 \n",
"\n",
" LAUC HR F_2 Whole_average Reco in test Test coverage \\\n",
"0 0.580866 0.850477 0.159293 0.321247 1.000000 0.060606 \n",
"0 0.583558 0.854719 0.164471 0.327693 1.000000 0.069264 \n",
"0 0.585642 0.856840 0.168325 0.333365 1.000000 0.073593 \n",
"0 0.590800 0.866384 0.176715 0.342608 1.000000 0.080087 \n",
"0 0.595531 0.873807 0.184624 0.351439 1.000000 0.090909 \n",
".. ... ... ... ... ... ... \n",
"0 0.581757 0.832450 0.160691 0.312473 0.978685 0.324675 \n",
"0 0.572141 0.793213 0.143766 0.288652 0.956734 0.375180 \n",
"0 0.554239 0.714740 0.112032 0.242561 0.917391 0.422799 \n",
"0 0.534170 0.576882 0.073268 0.179234 0.848993 0.461760 \n",
"0 0.512829 0.318134 0.032001 0.103351 0.751856 0.458874 \n",
"\n",
" Shannon Gini \n",
"0 3.669627 0.979636 \n",
"0 3.755959 0.977793 \n",
"0 3.853614 0.975477 \n",
"0 3.975583 0.972148 \n",
"0 4.135455 0.967171 \n",
".. ... ... \n",
"0 4.885124 0.923658 \n",
"0 5.163474 0.899700 \n",
"0 5.439353 0.871133 \n",
"0 5.645544 0.844059 \n",
"0 5.549901 0.851786 \n",
"\n",
"[80 rows x 21 columns]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# use better values than (1,0) for alpha and beta\n",
"# if you want you can also modify the model to consider different weights (we took as weights user ratings, maybe take ones or squares of ratings instead)\n",
"# save the outptut in 'Recommendations generated/ml-100k/Self_RP3Beta_estimations.csv'\n",
"# and 'Recommendations generated/ml-100k/Self_RP3Beta_reco.csv'\n",
"from tqdm import tqdm\n",
"result=[]\n",
"for alpha in tqdm([round(i,1) for i in np.arange(0.2,1.6001,0.2)]):\n",
" for beta in tqdm([round(i,1) for i in np.arange(0,1,0.1)]):\n",
" model=RP3Beta()\n",
" model.fit(train_ui, alpha=alpha, beta=beta)\n",
" reco=pd.DataFrame(model.recommend(user_code_id, item_code_id, topK=10))\n",
" estimations_df=pd.DataFrame(model.estimate(user_code_id, item_code_id, test_ui))\n",
" to_append=ev.evaluate(test=pd.read_csv('./Datasets/ml-100k/test.csv', sep='\\t', header=None),\n",
" estimations_df=estimations_df, \n",
" reco=np.array(reco),\n",
" super_reactions=[4,5])\n",
" to_append.insert(0, \"Alpha\", alpha)\n",
" to_append.insert(0, \"Beta\", beta)\n",
" result.append(to_append)\n",
"\n",
"result=pd.concat(result)\n",
"result"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Beta</th>\n",
" <th>Alpha</th>\n",
" <th>RMSE</th>\n",
" <th>MAE</th>\n",
" <th>precision</th>\n",
" <th>recall</th>\n",
" <th>F_1</th>\n",
" <th>F_05</th>\n",
" <th>precision_super</th>\n",
" <th>recall_super</th>\n",
" <th>...</th>\n",
" <th>mAP</th>\n",
" <th>MRR</th>\n",
" <th>LAUC</th>\n",
" <th>HR</th>\n",
" <th>F_2</th>\n",
" <th>Whole_average</th>\n",
" <th>Reco in test</th>\n",
" <th>Test coverage</th>\n",
" <th>Shannon</th>\n",
" <th>Gini</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.9</td>\n",
" <td>0.2</td>\n",
" <td>1.924999</td>\n",
" <td>1.578969</td>\n",
" <td>0.046872</td>\n",
" <td>0.029500</td>\n",
" <td>0.030577</td>\n",
" <td>0.036250</td>\n",
" <td>0.026717</td>\n",
" <td>0.030322</td>\n",
" <td>...</td>\n",
" <td>0.016399</td>\n",
" <td>0.087921</td>\n",
" <td>0.511252</td>\n",
" <td>0.304348</td>\n",
" <td>0.028900</td>\n",
" <td>0.099565</td>\n",
" <td>0.563945</td>\n",
" <td>0.386724</td>\n",
" <td>5.389109</td>\n",
" <td>0.873532</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.9</td>\n",
" <td>1.6</td>\n",
" <td>3.704592</td>\n",
" <td>3.529400</td>\n",
" <td>0.053128</td>\n",
" <td>0.032647</td>\n",
" <td>0.034075</td>\n",
" <td>0.040718</td>\n",
" <td>0.042060</td>\n",
" <td>0.041190</td>\n",
" <td>...</td>\n",
" <td>0.016389</td>\n",
" <td>0.070535</td>\n",
" <td>0.512829</td>\n",
" <td>0.318134</td>\n",
" <td>0.032001</td>\n",
" <td>0.103351</td>\n",
" <td>0.751856</td>\n",
" <td>0.458874</td>\n",
" <td>5.549901</td>\n",
" <td>0.851786</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.9</td>\n",
" <td>1.4</td>\n",
" <td>3.704592</td>\n",
" <td>3.529400</td>\n",
" <td>0.083987</td>\n",
" <td>0.043380</td>\n",
" <td>0.048687</td>\n",
" <td>0.061086</td>\n",
" <td>0.069850</td>\n",
" <td>0.059877</td>\n",
" <td>...</td>\n",
" <td>0.031721</td>\n",
" <td>0.110366</td>\n",
" <td>0.518313</td>\n",
" <td>0.404030</td>\n",
" <td>0.043871</td>\n",
" <td>0.129225</td>\n",
" <td>0.760870</td>\n",
" <td>0.437951</td>\n",
" <td>5.533867</td>\n",
" <td>0.857181</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.9</td>\n",
" <td>1.2</td>\n",
" <td>3.704590</td>\n",
" <td>3.529398</td>\n",
" <td>0.123754</td>\n",
" <td>0.059849</td>\n",
" <td>0.068941</td>\n",
" <td>0.088107</td>\n",
" <td>0.103112</td>\n",
" <td>0.086342</td>\n",
" <td>...</td>\n",
" <td>0.056347</td>\n",
" <td>0.173414</td>\n",
" <td>0.526691</td>\n",
" <td>0.513256</td>\n",
" <td>0.061176</td>\n",
" <td>0.164812</td>\n",
" <td>0.778473</td>\n",
" <td>0.428571</td>\n",
" <td>5.542104</td>\n",
" <td>0.859106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.9</td>\n",
" <td>0.4</td>\n",
" <td>3.570950</td>\n",
" <td>3.389375</td>\n",
" <td>0.134571</td>\n",
" <td>0.074128</td>\n",
" <td>0.081566</td>\n",
" <td>0.100181</td>\n",
" <td>0.093348</td>\n",
" <td>0.089465</td>\n",
" <td>...</td>\n",
" <td>0.061490</td>\n",
" <td>0.221330</td>\n",
" <td>0.533886</td>\n",
" <td>0.583245</td>\n",
" <td>0.074504</td>\n",
" <td>0.181723</td>\n",
" <td>0.756628</td>\n",
" <td>0.475469</td>\n",
" <td>5.836152</td>\n",
" <td>0.814736</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.7</td>\n",
" <td>0.4</td>\n",
" <td>3.366117</td>\n",
" <td>3.176750</td>\n",
" <td>0.325451</td>\n",
" <td>0.212663</td>\n",
" <td>0.211707</td>\n",
" <td>0.248509</td>\n",
" <td>0.241845</td>\n",
" <td>0.277204</td>\n",
" <td>...</td>\n",
" <td>0.254415</td>\n",
" <td>0.641002</td>\n",
" <td>0.604002</td>\n",
" <td>0.899258</td>\n",
" <td>0.203678</td>\n",
" <td>0.376005</td>\n",
" <td>0.999364</td>\n",
" <td>0.212843</td>\n",
" <td>4.811161</td>\n",
" <td>0.935129</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.6</td>\n",
" <td>0.6</td>\n",
" <td>3.675385</td>\n",
" <td>3.499644</td>\n",
" <td>0.321209</td>\n",
" <td>0.212728</td>\n",
" <td>0.210025</td>\n",
" <td>0.245804</td>\n",
" <td>0.240021</td>\n",
" <td>0.275765</td>\n",
" <td>...</td>\n",
" <td>0.252127</td>\n",
" <td>0.641583</td>\n",
" <td>0.604033</td>\n",
" <td>0.898197</td>\n",
" <td>0.202744</td>\n",
" <td>0.374524</td>\n",
" <td>1.000000</td>\n",
" <td>0.157287</td>\n",
" <td>4.524904</td>\n",
" <td>0.951442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.5</td>\n",
" <td>0.6</td>\n",
" <td>3.657073</td>\n",
" <td>3.481191</td>\n",
" <td>0.316543</td>\n",
" <td>0.213824</td>\n",
" <td>0.208731</td>\n",
" <td>0.243080</td>\n",
" <td>0.235515</td>\n",
" <td>0.272396</td>\n",
" <td>...</td>\n",
" <td>0.245543</td>\n",
" <td>0.627971</td>\n",
" <td>0.604552</td>\n",
" <td>0.903499</td>\n",
" <td>0.202671</td>\n",
" <td>0.371481</td>\n",
" <td>1.000000</td>\n",
" <td>0.125541</td>\n",
" <td>4.347845</td>\n",
" <td>0.959410</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.6</td>\n",
" <td>0.4</td>\n",
" <td>3.163972</td>\n",
" <td>2.963841</td>\n",
" <td>0.321633</td>\n",
" <td>0.214651</td>\n",
" <td>0.210829</td>\n",
" <td>0.246304</td>\n",
" <td>0.237554</td>\n",
" <td>0.271061</td>\n",
" <td>...</td>\n",
" <td>0.254635</td>\n",
" <td>0.638867</td>\n",
" <td>0.604994</td>\n",
" <td>0.897137</td>\n",
" <td>0.204058</td>\n",
" <td>0.374418</td>\n",
" <td>1.000000</td>\n",
" <td>0.152958</td>\n",
" <td>4.525149</td>\n",
" <td>0.951375</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.6</td>\n",
" <td>0.8</td>\n",
" <td>3.702928</td>\n",
" <td>3.527713</td>\n",
" <td>0.322694</td>\n",
" <td>0.216069</td>\n",
" <td>0.212152</td>\n",
" <td>0.247538</td>\n",
" <td>0.245279</td>\n",
" <td>0.284983</td>\n",
" <td>...</td>\n",
" <td>0.248239</td>\n",
" <td>0.636318</td>\n",
" <td>0.605683</td>\n",
" <td>0.910923</td>\n",
" <td>0.205450</td>\n",
" <td>0.376967</td>\n",
" <td>0.999788</td>\n",
" <td>0.178932</td>\n",
" <td>4.549663</td>\n",
" <td>0.950182</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>80 rows × 21 columns</p>\n",
"</div>"
],
"text/plain": [
" Beta Alpha RMSE MAE precision recall F_1 F_05 \\\n",
"0 0.9 0.2 1.924999 1.578969 0.046872 0.029500 0.030577 0.036250 \n",
"0 0.9 1.6 3.704592 3.529400 0.053128 0.032647 0.034075 0.040718 \n",
"0 0.9 1.4 3.704592 3.529400 0.083987 0.043380 0.048687 0.061086 \n",
"0 0.9 1.2 3.704590 3.529398 0.123754 0.059849 0.068941 0.088107 \n",
"0 0.9 0.4 3.570950 3.389375 0.134571 0.074128 0.081566 0.100181 \n",
".. ... ... ... ... ... ... ... ... \n",
"0 0.7 0.4 3.366117 3.176750 0.325451 0.212663 0.211707 0.248509 \n",
"0 0.6 0.6 3.675385 3.499644 0.321209 0.212728 0.210025 0.245804 \n",
"0 0.5 0.6 3.657073 3.481191 0.316543 0.213824 0.208731 0.243080 \n",
"0 0.6 0.4 3.163972 2.963841 0.321633 0.214651 0.210829 0.246304 \n",
"0 0.6 0.8 3.702928 3.527713 0.322694 0.216069 0.212152 0.247538 \n",
"\n",
" precision_super recall_super ... mAP MRR LAUC \\\n",
"0 0.026717 0.030322 ... 0.016399 0.087921 0.511252 \n",
"0 0.042060 0.041190 ... 0.016389 0.070535 0.512829 \n",
"0 0.069850 0.059877 ... 0.031721 0.110366 0.518313 \n",
"0 0.103112 0.086342 ... 0.056347 0.173414 0.526691 \n",
"0 0.093348 0.089465 ... 0.061490 0.221330 0.533886 \n",
".. ... ... ... ... ... ... \n",
"0 0.241845 0.277204 ... 0.254415 0.641002 0.604002 \n",
"0 0.240021 0.275765 ... 0.252127 0.641583 0.604033 \n",
"0 0.235515 0.272396 ... 0.245543 0.627971 0.604552 \n",
"0 0.237554 0.271061 ... 0.254635 0.638867 0.604994 \n",
"0 0.245279 0.284983 ... 0.248239 0.636318 0.605683 \n",
"\n",
" HR F_2 Whole_average Reco in test Test coverage Shannon \\\n",
"0 0.304348 0.028900 0.099565 0.563945 0.386724 5.389109 \n",
"0 0.318134 0.032001 0.103351 0.751856 0.458874 5.549901 \n",
"0 0.404030 0.043871 0.129225 0.760870 0.437951 5.533867 \n",
"0 0.513256 0.061176 0.164812 0.778473 0.428571 5.542104 \n",
"0 0.583245 0.074504 0.181723 0.756628 0.475469 5.836152 \n",
".. ... ... ... ... ... ... \n",
"0 0.899258 0.203678 0.376005 0.999364 0.212843 4.811161 \n",
"0 0.898197 0.202744 0.374524 1.000000 0.157287 4.524904 \n",
"0 0.903499 0.202671 0.371481 1.000000 0.125541 4.347845 \n",
"0 0.897137 0.204058 0.374418 1.000000 0.152958 4.525149 \n",
"0 0.910923 0.205450 0.376967 0.999788 0.178932 4.549663 \n",
"\n",
" Gini \n",
"0 0.873532 \n",
"0 0.851786 \n",
"0 0.857181 \n",
"0 0.859106 \n",
"0 0.814736 \n",
".. ... \n",
"0 0.935129 \n",
"0 0.951442 \n",
"0 0.959410 \n",
"0 0.951375 \n",
"0 0.950182 \n",
"\n",
"[80 rows x 21 columns]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"result.sort_values([\"recall\"])"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"So Beta 0.6 and alpha 0.8 seems to maximze recall"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"model=RP3Beta()\n",
"model.fit(train_ui, alpha=0.8, beta=0.6)\n",
"reco=pd.DataFrame(model.recommend(user_code_id, item_code_id, topK=10))\n",
"estimations_df=pd.DataFrame(model.estimate(user_code_id, item_code_id, test_ui))\n",
"reco.to_csv('Recommendations generated/ml-100k/Self_RP3Beta_reco.csv', index=False, header=False)\n",
"estimations_df.to_csv('Recommendations generated/ml-100k/Self_RP3Beta_estimations.csv', index=False, header=False)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"\n",
"943it [00:00, 11351.08it/s]\n",
"\n",
"\n",
"943it [00:00, 11351.15it/s]\n",
"\n",
"\n",
"943it [00:00, 11351.21it/s]\n",
"\n",
"\n",
"943it [00:00, 11489.57it/s]\n",
"\n",
"\n",
"943it [00:00, 11215.96it/s]\n",
"\n",
"\n",
"943it [00:00, 11489.47it/s]\n",
"\n",
"\n",
"943it [00:00, 11084.07it/s]\n",
"\n",
"\n",
"943it [00:00, 10353.19it/s]\n",
"\n",
"\n",
"943it [00:00, 11489.61it/s]\n",
"\n",
"\n",
"943it [00:00, 11351.21it/s]\n",
"\n",
"\n",
"943it [00:00, 10585.92it/s]\n",
"\n",
"\n",
"943it [00:00, 11489.64it/s]\n",
"\n",
"\n",
"943it [00:00, 9813.90it/s]\n",
"\n",
"\n",
"943it [00:00, 11351.21it/s]\n",
"\n",
"\n",
"943it [00:00, 11215.93it/s]\n",
"\n",
"\n",
"943it [00:00, 10829.15it/s]\n",
"\n",
"\n",
"943it [00:00, 10955.13it/s]\n",
"\n",
"\n",
"943it [00:00, 10706.24it/s]\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Model</th>\n",
" <th>RMSE</th>\n",
" <th>MAE</th>\n",
" <th>precision</th>\n",
" <th>recall</th>\n",
" <th>F_1</th>\n",
" <th>F_05</th>\n",
" <th>precision_super</th>\n",
" <th>recall_super</th>\n",
" <th>NDCG</th>\n",
" <th>mAP</th>\n",
" <th>MRR</th>\n",
" <th>LAUC</th>\n",
" <th>HR</th>\n",
" <th>F_2</th>\n",
" <th>Whole_average</th>\n",
" <th>Reco in test</th>\n",
" <th>Test coverage</th>\n",
" <th>Shannon</th>\n",
" <th>Gini</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Self_RP3Beta</td>\n",
" <td>3.702928</td>\n",
" <td>3.527713</td>\n",
" <td>0.322694</td>\n",
" <td>0.216069</td>\n",
" <td>0.212152</td>\n",
" <td>0.247538</td>\n",
" <td>0.245279</td>\n",
" <td>0.284983</td>\n",
" <td>0.388271</td>\n",
" <td>0.248239</td>\n",
" <td>0.636318</td>\n",
" <td>0.605683</td>\n",
" <td>0.910923</td>\n",
" <td>0.205450</td>\n",
" <td>0.376967</td>\n",
" <td>0.999788</td>\n",
" <td>0.178932</td>\n",
" <td>4.549663</td>\n",
" <td>0.950182</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Self_P3</td>\n",
" <td>3.702446</td>\n",
" <td>3.527273</td>\n",
" <td>0.282185</td>\n",
" <td>0.192092</td>\n",
" <td>0.186749</td>\n",
" <td>0.216980</td>\n",
" <td>0.204185</td>\n",
" <td>0.240096</td>\n",
" <td>0.339114</td>\n",
" <td>0.204905</td>\n",
" <td>0.572157</td>\n",
" <td>0.593544</td>\n",
" <td>0.875928</td>\n",
" <td>0.181702</td>\n",
" <td>0.340803</td>\n",
" <td>1.000000</td>\n",
" <td>0.077201</td>\n",
" <td>3.875892</td>\n",
" <td>0.974947</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Self_TopPop</td>\n",
" <td>2.508258</td>\n",
" <td>2.217909</td>\n",
" <td>0.188865</td>\n",
" <td>0.116919</td>\n",
" <td>0.118732</td>\n",
" <td>0.141584</td>\n",
" <td>0.130472</td>\n",
" <td>0.137473</td>\n",
" <td>0.214651</td>\n",
" <td>0.111707</td>\n",
" <td>0.400939</td>\n",
" <td>0.555546</td>\n",
" <td>0.765642</td>\n",
" <td>0.112750</td>\n",
" <td>0.249607</td>\n",
" <td>1.000000</td>\n",
" <td>0.038961</td>\n",
" <td>3.159079</td>\n",
" <td>0.987317</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Self_SVDBaseline</td>\n",
" <td>3.645871</td>\n",
" <td>3.480308</td>\n",
" <td>0.135949</td>\n",
" <td>0.078868</td>\n",
" <td>0.082011</td>\n",
" <td>0.099188</td>\n",
" <td>0.106974</td>\n",
" <td>0.103767</td>\n",
" <td>0.159486</td>\n",
" <td>0.079783</td>\n",
" <td>0.328576</td>\n",
" <td>0.536311</td>\n",
" <td>0.632025</td>\n",
" <td>0.077145</td>\n",
" <td>0.201674</td>\n",
" <td>0.999894</td>\n",
" <td>0.281385</td>\n",
" <td>5.140721</td>\n",
" <td>0.909056</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Ready_SVD</td>\n",
" <td>0.950835</td>\n",
" <td>0.748676</td>\n",
" <td>0.097879</td>\n",
" <td>0.048335</td>\n",
" <td>0.053780</td>\n",
" <td>0.068420</td>\n",
" <td>0.086159</td>\n",
" <td>0.080289</td>\n",
" <td>0.113553</td>\n",
" <td>0.054094</td>\n",
" <td>0.249037</td>\n",
" <td>0.520893</td>\n",
" <td>0.498409</td>\n",
" <td>0.048439</td>\n",
" <td>0.159941</td>\n",
" <td>0.997985</td>\n",
" <td>0.204906</td>\n",
" <td>4.395721</td>\n",
" <td>0.954872</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Self_SVD</td>\n",
" <td>0.913966</td>\n",
" <td>0.717846</td>\n",
" <td>0.105514</td>\n",
" <td>0.044566</td>\n",
" <td>0.054152</td>\n",
" <td>0.071575</td>\n",
" <td>0.095386</td>\n",
" <td>0.075767</td>\n",
" <td>0.108802</td>\n",
" <td>0.051730</td>\n",
" <td>0.200919</td>\n",
" <td>0.519021</td>\n",
" <td>0.482503</td>\n",
" <td>0.046741</td>\n",
" <td>0.154723</td>\n",
" <td>0.861612</td>\n",
" <td>0.142136</td>\n",
" <td>3.845461</td>\n",
" <td>0.973440</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Ready_Baseline</td>\n",
" <td>0.949459</td>\n",
" <td>0.752487</td>\n",
" <td>0.091410</td>\n",
" <td>0.037652</td>\n",
" <td>0.046030</td>\n",
" <td>0.061286</td>\n",
" <td>0.079614</td>\n",
" <td>0.056463</td>\n",
" <td>0.095957</td>\n",
" <td>0.043178</td>\n",
" <td>0.198193</td>\n",
" <td>0.515501</td>\n",
" <td>0.437964</td>\n",
" <td>0.039549</td>\n",
" <td>0.141900</td>\n",
" <td>1.000000</td>\n",
" <td>0.033911</td>\n",
" <td>2.836513</td>\n",
" <td>0.991139</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Ready_SVDBiased</td>\n",
" <td>0.943277</td>\n",
" <td>0.743628</td>\n",
" <td>0.080912</td>\n",
" <td>0.033048</td>\n",
" <td>0.040445</td>\n",
" <td>0.053881</td>\n",
" <td>0.070815</td>\n",
" <td>0.049631</td>\n",
" <td>0.090496</td>\n",
" <td>0.041928</td>\n",
" <td>0.200192</td>\n",
" <td>0.513176</td>\n",
" <td>0.411453</td>\n",
" <td>0.034776</td>\n",
" <td>0.135063</td>\n",
" <td>0.998727</td>\n",
" <td>0.168110</td>\n",
" <td>4.165618</td>\n",
" <td>0.964211</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Self_KNNSurprisetask</td>\n",
" <td>0.946255</td>\n",
" <td>0.745209</td>\n",
" <td>0.083457</td>\n",
" <td>0.032848</td>\n",
" <td>0.041227</td>\n",
" <td>0.055493</td>\n",
" <td>0.074785</td>\n",
" <td>0.048890</td>\n",
" <td>0.089577</td>\n",
" <td>0.040902</td>\n",
" <td>0.189057</td>\n",
" <td>0.513076</td>\n",
" <td>0.417815</td>\n",
" <td>0.034996</td>\n",
" <td>0.135177</td>\n",
" <td>0.888547</td>\n",
" <td>0.130592</td>\n",
" <td>3.611806</td>\n",
" <td>0.978659</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Self_TopRated</td>\n",
" <td>2.508258</td>\n",
" <td>2.217909</td>\n",
" <td>0.079321</td>\n",
" <td>0.032667</td>\n",
" <td>0.039983</td>\n",
" <td>0.053170</td>\n",
" <td>0.068884</td>\n",
" <td>0.048582</td>\n",
" <td>0.070766</td>\n",
" <td>0.027602</td>\n",
" <td>0.114790</td>\n",
" <td>0.512943</td>\n",
" <td>0.411453</td>\n",
" <td>0.034385</td>\n",
" <td>0.124546</td>\n",
" <td>1.000000</td>\n",
" <td>0.024531</td>\n",
" <td>2.761238</td>\n",
" <td>0.991660</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Self_GlobalAvg</td>\n",
" <td>1.125760</td>\n",
" <td>0.943534</td>\n",
" <td>0.061188</td>\n",
" <td>0.025968</td>\n",
" <td>0.031383</td>\n",
" <td>0.041343</td>\n",
" <td>0.040558</td>\n",
" <td>0.032107</td>\n",
" <td>0.067695</td>\n",
" <td>0.027470</td>\n",
" <td>0.171187</td>\n",
" <td>0.509546</td>\n",
" <td>0.384942</td>\n",
" <td>0.027213</td>\n",
" <td>0.118383</td>\n",
" <td>1.000000</td>\n",
" <td>0.025974</td>\n",
" <td>2.711772</td>\n",
" <td>0.992003</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Ready_Random</td>\n",
" <td>1.525730</td>\n",
" <td>1.225537</td>\n",
" <td>0.045917</td>\n",
" <td>0.020462</td>\n",
" <td>0.023786</td>\n",
" <td>0.031070</td>\n",
" <td>0.026931</td>\n",
" <td>0.021781</td>\n",
" <td>0.051318</td>\n",
" <td>0.019634</td>\n",
" <td>0.132275</td>\n",
" <td>0.506747</td>\n",
" <td>0.316013</td>\n",
" <td>0.020936</td>\n",
" <td>0.101406</td>\n",
" <td>0.987275</td>\n",
" <td>0.183261</td>\n",
" <td>5.096275</td>\n",
" <td>0.908275</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Ready_I-KNN</td>\n",
" <td>1.030386</td>\n",
" <td>0.813067</td>\n",
" <td>0.026087</td>\n",
" <td>0.006908</td>\n",
" <td>0.010593</td>\n",
" <td>0.016046</td>\n",
" <td>0.021137</td>\n",
" <td>0.009522</td>\n",
" <td>0.024214</td>\n",
" <td>0.008958</td>\n",
" <td>0.048068</td>\n",
" <td>0.499885</td>\n",
" <td>0.154825</td>\n",
" <td>0.008007</td>\n",
" <td>0.069521</td>\n",
" <td>0.402333</td>\n",
" <td>0.434343</td>\n",
" <td>5.133650</td>\n",
" <td>0.877999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Ready_I-KNNBaseline</td>\n",
" <td>0.935327</td>\n",
" <td>0.737424</td>\n",
" <td>0.002545</td>\n",
" <td>0.000755</td>\n",
" <td>0.001105</td>\n",
" <td>0.001602</td>\n",
" <td>0.002253</td>\n",
" <td>0.000930</td>\n",
" <td>0.003444</td>\n",
" <td>0.001362</td>\n",
" <td>0.011760</td>\n",
" <td>0.496724</td>\n",
" <td>0.021209</td>\n",
" <td>0.000862</td>\n",
" <td>0.045379</td>\n",
" <td>0.482821</td>\n",
" <td>0.059885</td>\n",
" <td>2.232578</td>\n",
" <td>0.994487</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Ready_U-KNN</td>\n",
" <td>1.023495</td>\n",
" <td>0.807913</td>\n",
" <td>0.000742</td>\n",
" <td>0.000205</td>\n",
" <td>0.000305</td>\n",
" <td>0.000449</td>\n",
" <td>0.000536</td>\n",
" <td>0.000198</td>\n",
" <td>0.000845</td>\n",
" <td>0.000274</td>\n",
" <td>0.002744</td>\n",
" <td>0.496441</td>\n",
" <td>0.007423</td>\n",
" <td>0.000235</td>\n",
" <td>0.042533</td>\n",
" <td>0.602121</td>\n",
" <td>0.010823</td>\n",
" <td>2.089186</td>\n",
" <td>0.995706</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Self_BaselineIU</td>\n",
" <td>0.958136</td>\n",
" <td>0.754051</td>\n",
" <td>0.000954</td>\n",
" <td>0.000188</td>\n",
" <td>0.000298</td>\n",
" <td>0.000481</td>\n",
" <td>0.000644</td>\n",
" <td>0.000223</td>\n",
" <td>0.001043</td>\n",
" <td>0.000335</td>\n",
" <td>0.003348</td>\n",
" <td>0.496433</td>\n",
" <td>0.009544</td>\n",
" <td>0.000220</td>\n",
" <td>0.042809</td>\n",
" <td>0.699046</td>\n",
" <td>0.005051</td>\n",
" <td>1.945910</td>\n",
" <td>0.995669</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Self_BaselineUI</td>\n",
" <td>0.967585</td>\n",
" <td>0.762740</td>\n",
" <td>0.000954</td>\n",
" <td>0.000170</td>\n",
" <td>0.000278</td>\n",
" <td>0.000463</td>\n",
" <td>0.000644</td>\n",
" <td>0.000189</td>\n",
" <td>0.000752</td>\n",
" <td>0.000168</td>\n",
" <td>0.001677</td>\n",
" <td>0.496424</td>\n",
" <td>0.009544</td>\n",
" <td>0.000201</td>\n",
" <td>0.042622</td>\n",
" <td>0.600530</td>\n",
" <td>0.005051</td>\n",
" <td>1.803126</td>\n",
" <td>0.996380</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Self_IKNN</td>\n",
" <td>1.018363</td>\n",
" <td>0.808793</td>\n",
" <td>0.000318</td>\n",
" <td>0.000108</td>\n",
" <td>0.000140</td>\n",
" <td>0.000189</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000214</td>\n",
" <td>0.000037</td>\n",
" <td>0.000368</td>\n",
" <td>0.496391</td>\n",
" <td>0.003181</td>\n",
" <td>0.000118</td>\n",
" <td>0.041755</td>\n",
" <td>0.392153</td>\n",
" <td>0.115440</td>\n",
" <td>4.174741</td>\n",
" <td>0.965327</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Model RMSE MAE precision recall F_1 \\\n",
"0 Self_RP3Beta 3.702928 3.527713 0.322694 0.216069 0.212152 \n",
"0 Self_P3 3.702446 3.527273 0.282185 0.192092 0.186749 \n",
"0 Self_TopPop 2.508258 2.217909 0.188865 0.116919 0.118732 \n",
"0 Self_SVDBaseline 3.645871 3.480308 0.135949 0.078868 0.082011 \n",
"0 Ready_SVD 0.950835 0.748676 0.097879 0.048335 0.053780 \n",
"0 Self_SVD 0.913966 0.717846 0.105514 0.044566 0.054152 \n",
"0 Ready_Baseline 0.949459 0.752487 0.091410 0.037652 0.046030 \n",
"0 Ready_SVDBiased 0.943277 0.743628 0.080912 0.033048 0.040445 \n",
"0 Self_KNNSurprisetask 0.946255 0.745209 0.083457 0.032848 0.041227 \n",
"0 Self_TopRated 2.508258 2.217909 0.079321 0.032667 0.039983 \n",
"0 Self_GlobalAvg 1.125760 0.943534 0.061188 0.025968 0.031383 \n",
"0 Ready_Random 1.525730 1.225537 0.045917 0.020462 0.023786 \n",
"0 Ready_I-KNN 1.030386 0.813067 0.026087 0.006908 0.010593 \n",
"0 Ready_I-KNNBaseline 0.935327 0.737424 0.002545 0.000755 0.001105 \n",
"0 Ready_U-KNN 1.023495 0.807913 0.000742 0.000205 0.000305 \n",
"0 Self_BaselineIU 0.958136 0.754051 0.000954 0.000188 0.000298 \n",
"0 Self_BaselineUI 0.967585 0.762740 0.000954 0.000170 0.000278 \n",
"0 Self_IKNN 1.018363 0.808793 0.000318 0.000108 0.000140 \n",
"\n",
" F_05 precision_super recall_super NDCG mAP MRR \\\n",
"0 0.247538 0.245279 0.284983 0.388271 0.248239 0.636318 \n",
"0 0.216980 0.204185 0.240096 0.339114 0.204905 0.572157 \n",
"0 0.141584 0.130472 0.137473 0.214651 0.111707 0.400939 \n",
"0 0.099188 0.106974 0.103767 0.159486 0.079783 0.328576 \n",
"0 0.068420 0.086159 0.080289 0.113553 0.054094 0.249037 \n",
"0 0.071575 0.095386 0.075767 0.108802 0.051730 0.200919 \n",
"0 0.061286 0.079614 0.056463 0.095957 0.043178 0.198193 \n",
"0 0.053881 0.070815 0.049631 0.090496 0.041928 0.200192 \n",
"0 0.055493 0.074785 0.048890 0.089577 0.040902 0.189057 \n",
"0 0.053170 0.068884 0.048582 0.070766 0.027602 0.114790 \n",
"0 0.041343 0.040558 0.032107 0.067695 0.027470 0.171187 \n",
"0 0.031070 0.026931 0.021781 0.051318 0.019634 0.132275 \n",
"0 0.016046 0.021137 0.009522 0.024214 0.008958 0.048068 \n",
"0 0.001602 0.002253 0.000930 0.003444 0.001362 0.011760 \n",
"0 0.000449 0.000536 0.000198 0.000845 0.000274 0.002744 \n",
"0 0.000481 0.000644 0.000223 0.001043 0.000335 0.003348 \n",
"0 0.000463 0.000644 0.000189 0.000752 0.000168 0.001677 \n",
"0 0.000189 0.000000 0.000000 0.000214 0.000037 0.000368 \n",
"\n",
" LAUC HR F_2 Whole_average Reco in test Test coverage \\\n",
"0 0.605683 0.910923 0.205450 0.376967 0.999788 0.178932 \n",
"0 0.593544 0.875928 0.181702 0.340803 1.000000 0.077201 \n",
"0 0.555546 0.765642 0.112750 0.249607 1.000000 0.038961 \n",
"0 0.536311 0.632025 0.077145 0.201674 0.999894 0.281385 \n",
"0 0.520893 0.498409 0.048439 0.159941 0.997985 0.204906 \n",
"0 0.519021 0.482503 0.046741 0.154723 0.861612 0.142136 \n",
"0 0.515501 0.437964 0.039549 0.141900 1.000000 0.033911 \n",
"0 0.513176 0.411453 0.034776 0.135063 0.998727 0.168110 \n",
"0 0.513076 0.417815 0.034996 0.135177 0.888547 0.130592 \n",
"0 0.512943 0.411453 0.034385 0.124546 1.000000 0.024531 \n",
"0 0.509546 0.384942 0.027213 0.118383 1.000000 0.025974 \n",
"0 0.506747 0.316013 0.020936 0.101406 0.987275 0.183261 \n",
"0 0.499885 0.154825 0.008007 0.069521 0.402333 0.434343 \n",
"0 0.496724 0.021209 0.000862 0.045379 0.482821 0.059885 \n",
"0 0.496441 0.007423 0.000235 0.042533 0.602121 0.010823 \n",
"0 0.496433 0.009544 0.000220 0.042809 0.699046 0.005051 \n",
"0 0.496424 0.009544 0.000201 0.042622 0.600530 0.005051 \n",
"0 0.496391 0.003181 0.000118 0.041755 0.392153 0.115440 \n",
"\n",
" Shannon Gini \n",
"0 4.549663 0.950182 \n",
"0 3.875892 0.974947 \n",
"0 3.159079 0.987317 \n",
"0 5.140721 0.909056 \n",
"0 4.395721 0.954872 \n",
"0 3.845461 0.973440 \n",
"0 2.836513 0.991139 \n",
"0 4.165618 0.964211 \n",
"0 3.611806 0.978659 \n",
"0 2.761238 0.991660 \n",
"0 2.711772 0.992003 \n",
"0 5.096275 0.908275 \n",
"0 5.133650 0.877999 \n",
"0 2.232578 0.994487 \n",
"0 2.089186 0.995706 \n",
"0 1.945910 0.995669 \n",
"0 1.803126 0.996380 \n",
"0 4.174741 0.965327 "
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import imp\n",
"imp.reload(ev)\n",
"\n",
"import evaluation_measures as ev\n",
"dir_path=\"Recommendations generated/ml-100k/\"\n",
"super_reactions=[4,5]\n",
"test=pd.read_csv('./Datasets/ml-100k/test.csv', sep='\\t', header=None)\n",
"\n",
"ev.evaluate_all(test, dir_path, super_reactions)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# project task 7 (optional): implement graph-based model of your choice "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# for example change length of paths in RP3beta\n",
"# save the outptut in 'Recommendations generated/ml-100k/Self_GraphTask_estimations.csv'\n",
"# and 'Recommendations generated/ml-100k/Self_GraphTask_reco.csv'"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}