{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "b341d05d-d472-4d6c-8ea1-acf83d9e80a2", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "id": "2473b5cc-771f-4153-84ea-2543383ef739", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
user_iditem_idratingtimestamp
01962423881250949
11863023891717742
2223771878887116
3244512880606923
41663461886397596
\n", "
" ], "text/plain": [ " user_id item_id rating timestamp\n", "0 196 242 3 881250949\n", "1 186 302 3 891717742\n", "2 22 377 1 878887116\n", "3 244 51 2 880606923\n", "4 166 346 1 886397596" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "names = ['user_id', 'item_id', 'rating', 'timestamp']\n", "df = pd.read_csv('ml-100k/u.data', sep='\\t', names=names)\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 3, "id": "712799d9-5019-4112-907c-500aac9cebfb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "943" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n_user = df.user_id.unique().shape[0]\n", "n_user" ] }, { "cell_type": "code", "execution_count": 4, "id": "1b731c9f-7993-48bc-8899-c88536f20cad", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1682" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n_item = df.item_id.unique().shape[0]\n", "n_item" ] }, { "cell_type": "code", "execution_count": 5, "id": "e72e57d0-b667-4b03-b0f6-264993bb36dc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " ...,\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.]])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# binary Matrix\n", "ratingNum = np.zeros((n_user, n_item))\n", "ratingNum" ] }, { "cell_type": "code", "execution_count": 6, "id": "2adbb8e8-f54b-41d1-954a-d56e4d980941", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[1. 1. 1. ... 0. 0. 0.]\n", " [1. 0. 0. ... 0. 0. 0.]\n", " [0. 0. 0. ... 0. 0. 0.]\n", " ...\n", " [1. 0. 0. ... 0. 0. 0.]\n", " [0. 0. 0. ... 0. 0. 0.]\n", " [0. 1. 0. ... 0. 0. 0.]]\n" ] } ], "source": [ "for row in df.itertuples():\n", " # Pandas(Index=0, user_id=196, item_id=242, rating=3, timestamp=881250949)\n", " ratingNum[row[1]-1, row[2]-1] = 1\n", "print(ratingNum)" ] }, { "cell_type": "code", "execution_count": 7, "id": "db99c0e5-1176-4d04-9b1e-5c7e002c6e21", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[452. 131. 90. ... 1. 1. 1.]\n" ] } ], "source": [ "itemrateNumCurrent = ratingNum.sum(axis=0)\n", "print(itemrateNumCurrent)\n", "itemrateNumCurrent.sort()" ] }, { "cell_type": "code", "execution_count": 8, "id": "466ad956-1376-45b6-81a4-bda201f4ba71", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'popularity')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# plt long tail\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "plt.plot(itemrateNumCurrent[::-1])\n", "plt.xlabel(\"sourted items\")\n", "plt.ylabel(\"popularity\")" ] }, { "cell_type": "code", "execution_count": 9, "id": "53818f4d-53b4-4564-a2d1-64da69ddb4b8", "metadata": {}, "outputs": [], "source": [ "# Top Pop\n", "ratings = np.zeros((n_user, n_item))" ] }, { "cell_type": "code", "execution_count": 10, "id": "0cb39eff-def9-4a45-8a8a-3deec81e0ba2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[5. 3. 4. ... 0. 0. 0.]\n", " [4. 0. 0. ... 0. 0. 0.]\n", " [0. 0. 0. ... 0. 0. 0.]\n", " ...\n", " [5. 0. 0. ... 0. 0. 0.]\n", " [0. 0. 0. ... 0. 0. 0.]\n", " [0. 5. 0. ... 0. 0. 0.]]\n" ] } ], "source": [ "for row in df.itertuples():\n", " # Pandas(Index=0, user_id=196, item_id=242, rating=3, timestamp=881250949)\n", " ratings[row[1]-1,row[2]-1] = row[3]\n", "print(ratings)" ] }, { "cell_type": "code", "execution_count": 11, "id": "538a15d5-1c36-44e9-932f-de7395e8db0a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([452., 131., 90., ..., 1., 1., 1.])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ratingNum = ratingNum.sum(axis=0) # the total namber of times an item got rate by all users \n", "ratingNum" ] }, { "cell_type": "code", "execution_count": 12, "id": "5a4bcf6d-ae46-442d-8141-fc154bfb0d60", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1753., 420., 273., ..., 2., 3., 3.])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "itemRateSum = ratings.sum(axis=0) # the total rating reviced by every items from all user\n", "itemRateSum" ] }, { "cell_type": "code", "execution_count": 13, "id": "3937fd71-53e4-47e3-b822-3ad04fc8f960", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([3.87831858, 3.20610687, 3.03333333, ..., 2. , 3. ,\n", " 3. ])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "itemRateAvg = itemRateSum / ratingNum\n", "itemRateAvg" ] }, { "cell_type": "code", "execution_count": 16, "id": "c15af163-9467-49a7-9336-c21fe1fa1d52", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
movie idmovie titlerelease datevideo release dateIMDb URLunknownActionAdventureAnimationChildren's...FantasyFilm-NoirHorrorMusicalMysteryRomanceSci-FiThrillerWarWestern
01Toy Story (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...00011...0000000000
12GoldenEye (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?GoldenEye%20(...01100...0000000100
23Four Rooms (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Four%20Rooms%...00000...0000000100
34Get Shorty (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Get%20Shorty%...01000...0000000000
45Copycat (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Copycat%20(1995)00000...0000000100
..................................................................
16771678Mat' i syn (1997)06-Feb-1998NaNhttp://us.imdb.com/M/title-exact?Mat%27+i+syn+...00000...0000000000
16781679B. Monkey (1998)06-Feb-1998NaNhttp://us.imdb.com/M/title-exact?B%2E+Monkey+(...00000...0000010100
16791680Sliding Doors (1998)01-Jan-1998NaNhttp://us.imdb.com/Title?Sliding+Doors+(1998)00000...0000010000
16801681You So Crazy (1994)01-Jan-1994NaNhttp://us.imdb.com/M/title-exact?You%20So%20Cr...00000...0000000000
16811682Scream of Stone (Schrei aus Stein) (1991)08-Mar-1996NaNhttp://us.imdb.com/M/title-exact?Schrei%20aus%...00000...0000000000
\n", "

1682 rows × 24 columns

\n", "
" ], "text/plain": [ " movie id movie title release date \\\n", "0 1 Toy Story (1995) 01-Jan-1995 \n", "1 2 GoldenEye (1995) 01-Jan-1995 \n", "2 3 Four Rooms (1995) 01-Jan-1995 \n", "3 4 Get Shorty (1995) 01-Jan-1995 \n", "4 5 Copycat (1995) 01-Jan-1995 \n", "... ... ... ... \n", "1677 1678 Mat' i syn (1997) 06-Feb-1998 \n", "1678 1679 B. Monkey (1998) 06-Feb-1998 \n", "1679 1680 Sliding Doors (1998) 01-Jan-1998 \n", "1680 1681 You So Crazy (1994) 01-Jan-1994 \n", "1681 1682 Scream of Stone (Schrei aus Stein) (1991) 08-Mar-1996 \n", "\n", " video release date IMDb URL \\\n", "0 NaN http://us.imdb.com/M/title-exact?Toy%20Story%2... \n", "1 NaN http://us.imdb.com/M/title-exact?GoldenEye%20(... \n", "2 NaN http://us.imdb.com/M/title-exact?Four%20Rooms%... \n", "3 NaN http://us.imdb.com/M/title-exact?Get%20Shorty%... \n", "4 NaN http://us.imdb.com/M/title-exact?Copycat%20(1995) \n", "... ... ... \n", "1677 NaN http://us.imdb.com/M/title-exact?Mat%27+i+syn+... \n", "1678 NaN http://us.imdb.com/M/title-exact?B%2E+Monkey+(... \n", "1679 NaN http://us.imdb.com/Title?Sliding+Doors+(1998) \n", "1680 NaN http://us.imdb.com/M/title-exact?You%20So%20Cr... \n", "1681 NaN http://us.imdb.com/M/title-exact?Schrei%20aus%... \n", "\n", " unknown Action Adventure Animation Children's ... Fantasy \\\n", "0 0 0 0 1 1 ... 0 \n", "1 0 1 1 0 0 ... 0 \n", "2 0 0 0 0 0 ... 0 \n", "3 0 1 0 0 0 ... 0 \n", "4 0 0 0 0 0 ... 0 \n", "... ... ... ... ... ... ... ... \n", "1677 0 0 0 0 0 ... 0 \n", "1678 0 0 0 0 0 ... 0 \n", "1679 0 0 0 0 0 ... 0 \n", "1680 0 0 0 0 0 ... 0 \n", "1681 0 0 0 0 0 ... 0 \n", "\n", " Film-Noir Horror Musical Mystery Romance Sci-Fi Thriller War \\\n", "0 0 0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 1 0 \n", "2 0 0 0 0 0 0 1 0 \n", "3 0 0 0 0 0 0 0 0 \n", "4 0 0 0 0 0 0 1 0 \n", "... ... ... ... ... ... ... ... ... \n", "1677 0 0 0 0 0 0 0 0 \n", "1678 0 0 0 0 1 0 1 0 \n", "1679 0 0 0 0 1 0 0 0 \n", "1680 0 0 0 0 0 0 0 0 \n", "1681 0 0 0 0 0 0 0 0 \n", "\n", " Western \n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "1677 0 \n", "1678 0 \n", "1679 0 \n", "1680 0 \n", "1681 0 \n", "\n", "[1682 rows x 24 columns]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "i_cols = ['movie id', 'movie title' ,'release date','video release date',\n", " 'IMDb URL', 'unknown', 'Action', 'Adventure', 'Animation',\n", " 'Children\\'s', 'Comedy', 'Crime', 'Documentary', 'Drama',\n", " 'Fantasy', 'Film-Noir', 'Horror', 'Musical', 'Mystery',\n", " 'Romance', 'Sci-Fi', 'Thriller', 'War', 'Western'] \n", "items = pd.read_csv('ml-100k/u.item', sep='|', names=i_cols, encoding='latin-1')\n", "items" ] }, { "cell_type": "code", "execution_count": 19, "id": "2872ca93-0ae8-4177-98c0-9e490556a935", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ True True True ... False False False]\n", "[0. 0. 0. ... 1. 1. 1.]\n" ] } ], "source": [ "top_n = 5\n", "activeUser = 0\n", "\n", "maskActiveUser = ratings[activeUser,:]>0\n", "print(maskActiveUser)\n", "\n", "itemRateNumCurrent = ratingNum.copy()\n", "itemRateNumCurrent[maskActiveUser] = 0\n", "print(itemRateNumCurrent)" ] }, { "cell_type": "code", "execution_count": 20, "id": "95df3468-eb4b-4924-a7c5-1b3a2214b505", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0, 172, 173, ..., 287, 285, 293])" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "itemSortInd = itemRateNumCurrent.argsort()\n", "itemSortInd" ] }, { "cell_type": "code", "execution_count": 22, "id": "e3ef3388-4b1f-4428-905b-90dc0e952bce", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "movie ID\t movie title\n", "293 Liar Liar (1997)\n", "285 English Patient, The (1996)\n", "287 Scream (1996)\n", "299 Air Force One (1997)\n", "312 Titanic (1997)\n", "Name: movie title, dtype: object\n" ] } ], "source": [ "print('movie ID' + '\\t movie title')\n", "print(items['movie title'][itemSortInd[:-1 -top_n:-1]])" ] }, { "cell_type": "code", "execution_count": 21, "id": "d4a3c30c-24eb-49c4-825c-e0d8a02df1cc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([293, 285, 287, 299, 312])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "itemSortInd[:-1 -top_n:-1]" ] }, { "cell_type": "code", "execution_count": 23, "id": "b768b57b-edf4-4c79-8d36-2a52942b5bfe", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "movie ID\t movie title\n", "1535 Aiqing wansui (1994)\n", "1652 Entertaining Angels: The Dorothy Day Story (1996)\n", "1200 Marlene Dietrich: Shadow and Light (1996) \n", "1598 Someone Else's America (1995)\n", "1121 They Made Me a Criminal (1939)\n", "Name: movie title, dtype: object\n" ] } ], "source": [ "itemRateAvgCurrent = itemRateAvg.copy()\n", "itemRateAvgCurrent[maskActiveUser] = 0\n", "\n", "itemSortIndAvg = itemRateAvgCurrent.argsort()\n", "print('movie ID' + '\\t movie title')\n", "print(items['movie title'][itemSortIndAvg[:-1 -top_n:-1]])" ] }, { "cell_type": "code", "execution_count": 24, "id": "3d559a43-2d5a-4829-91e8-09e37b3ef1eb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1535, 1652, 1200, 1598, 1121])" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "itemSortIndAvg[:-1 -top_n:-1]" ] }, { "cell_type": "code", "execution_count": null, "id": "4e39bc31-547e-4fbf-8234-7f9632a858e5", "metadata": {}, "outputs": [], "source": [] } ], "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.9.6" } }, "nbformat": 4, "nbformat_minor": 5 }