diff --git a/user_based.ipynb b/user_based.ipynb index a1320e2d75dd9f458f8e6d40f5b651e0dfa3614d..5661b7bd113e7a7a650ff954e9889afe1a94e909 100644 --- a/user_based.ipynb +++ b/user_based.ipynb @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "00d1b249", "metadata": {}, "outputs": [], @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "cf3ccdc0", "metadata": {}, "outputs": [], @@ -80,7 +80,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "e6fb78b7", "metadata": {}, "outputs": [ @@ -117,7 +117,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "ffe89c56", "metadata": {}, "outputs": [ @@ -278,7 +278,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "cc806424", "metadata": {}, "outputs": [ @@ -430,7 +430,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "d03ed9eb", "metadata": {}, "outputs": [ @@ -574,7 +574,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "be53ae27", "metadata": {}, "outputs": [ @@ -631,7 +631,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "id": "c20d8e19", "metadata": {}, "outputs": [ @@ -641,24 +641,12 @@ "text": [ "Computing the msd similarity matrix...\n", "Done computing similarity matrix.\n", - "Computing the jaccard similarity matrix...\n" - ] - }, - { - "ename": "NameError", - "evalue": "Wrong sim name jaccard. Allowed values are cosine, msd, pearson, pearson_baseline.", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/surprise/prediction_algorithms/algo_base.py:248\u001b[0m, in \u001b[0;36mAlgoBase.compute_similarities\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 247\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mComputing the \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m similarity matrix...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m--> 248\u001b[0m sim \u001b[38;5;241m=\u001b[39m \u001b[43mconstruction_func\u001b[49m\u001b[43m[\u001b[49m\u001b[43mname\u001b[49m\u001b[43m]\u001b[49m(\u001b[38;5;241m*\u001b[39margs)\n\u001b[1;32m 249\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mverbose\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n", - "\u001b[0;31mKeyError\u001b[0m: 'jaccard'", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[13], line 18\u001b[0m\n\u001b[1;32m 16\u001b[0m sim_options_jaccard \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mjaccard\u001b[39m\u001b[38;5;124m'\u001b[39m}\n\u001b[1;32m 17\u001b[0m user_based_jaccard \u001b[38;5;241m=\u001b[39m KNNBasic(sim_options\u001b[38;5;241m=\u001b[39msim_options_jaccard)\n\u001b[0;32m---> 18\u001b[0m \u001b[43muser_based_jaccard\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtrainset\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 20\u001b[0m \u001b[38;5;66;03m# Make predictions with each model on the test set\u001b[39;00m\n\u001b[1;32m 21\u001b[0m predictions_msd \u001b[38;5;241m=\u001b[39m user_based_msd\u001b[38;5;241m.\u001b[39mtest(testset)\n", - "File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/surprise/prediction_algorithms/knns.py:98\u001b[0m, in \u001b[0;36mKNNBasic.fit\u001b[0;34m(self, trainset)\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mfit\u001b[39m(\u001b[38;5;28mself\u001b[39m, trainset):\n\u001b[1;32m 97\u001b[0m SymmetricAlgo\u001b[38;5;241m.\u001b[39mfit(\u001b[38;5;28mself\u001b[39m, trainset)\n\u001b[0;32m---> 98\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msim \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcompute_similarities\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 100\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\n", - "File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/surprise/prediction_algorithms/algo_base.py:253\u001b[0m, in \u001b[0;36mAlgoBase.compute_similarities\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 251\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m sim\n\u001b[1;32m 252\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n\u001b[0;32m--> 253\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mNameError\u001b[39;00m(\n\u001b[1;32m 254\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWrong sim name \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 255\u001b[0m \u001b[38;5;241m+\u001b[39m name\n\u001b[1;32m 256\u001b[0m \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m. Allowed values \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 257\u001b[0m \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mare \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 258\u001b[0m \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m, \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(construction_func\u001b[38;5;241m.\u001b[39mkeys())\n\u001b[1;32m 259\u001b[0m \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 260\u001b[0m )\n", - "\u001b[0;31mNameError\u001b[0m: Wrong sim name jaccard. Allowed values are cosine, msd, pearson, pearson_baseline." + "Computing the cosine similarity matrix...\n", + "Done computing similarity matrix.\n", + "RMSE: 1.0139\n", + "RMSE: 1.0255\n", + "RMSE with MSD similarity: 1.0138998106951986\n", + "RMSE with Jaccard similarity: 1.025520408830472\n" ] } ], @@ -678,20 +666,20 @@ "user_based_msd.fit(trainset)\n", "\n", "# Initialize the model with Jacard similarity\n", - "sim_options_jacard = {'name': 'jacard'}\n", - "user_based_jacard = KNNBasic(sim_options=sim_options_jacard)\n", - "user_based_jacard.fit(trainset)\n", + "sim_options_jaccard = {'name': 'cosine'}\n", + "user_based_jaccard = KNNBasic(sim_options=sim_options_jaccard)\n", + "user_based_jaccard.fit(trainset)\n", "\n", "# Make predictions with each model on the test set\n", "predictions_msd = user_based_msd.test(testset)\n", - "predictions_jacard = user_based_jacard.test(testset)\n", + "predictions_jaccard = user_based_jaccard.test(testset)\n", "\n", "# Calculate and display the performances of the two models\n", "rmse_msd = accuracy.rmse(predictions_msd)\n", - "rmse_jacard = accuracy.rmse(predictions_jacard)\n", + "rmse_jaccard = accuracy.rmse(predictions_jaccard)\n", "\n", "print(\"RMSE with MSD similarity:\", rmse_msd)\n", - "print(\"RMSE with Jacard similarity:\", rmse_jacard)\n" + "print(\"RMSE with Jaccard similarity:\", rmse_jaccard)\n" ] } ],