{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyMAFA2EYfyZHWxBXYVidXcz"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["## Mengunduh dan Menyiapkan Dataset MovieLens 100k\n","Pertama, kita unduh dataset dari MovieLens atau gunakan library surprise untuk memuatnya dengan mudah."],"metadata":{"id":"XuAFN0HOVwz5"}},{"cell_type":"code","execution_count":2,"metadata":{"id":"a5vVoaGrOWqT","executionInfo":{"status":"ok","timestamp":1724049334056,"user_tz":-420,"elapsed":2310,"user":{"displayName":"Andys Collection","userId":"04951959771200949138"}}},"outputs":[],"source":["import pandas as pd\n","import numpy as np\n","from sklearn.model_selection import train_test_split"]},{"cell_type":"code","source":["# Mengunduh dataset MovieLens 100k\n","!wget -q https://files.grouplens.org/datasets/movielens/ml-100k.zip\n","!unzip -q ml-100k.zip\n","\n","# Memuat data\n","data = pd.read_csv('ml-100k/u.data', sep='\\t', names=['user_id', 'item_id', 'rating', 'timestamp'])\n","data = data[['user_id', 'item_id', 'rating']] # Kita hanya butuh user_id, item_id, dan rating\n","\n","# Membaca file item yang berisi metadata\n","genre_list = [\"unknown\", \"Action\", \"Adventure\", \"Animation\", \"Children's\", \"Comedy\", \"Crime\", \"Documentary\", \"Drama\", \"Fantasy\", \"Film-Noir\", \"Horror\", \"Musical\", \"Mystery\", \"Romance\", \"Sci-Fi\", \"Thriller\", \"War\", \"Western\"]\n","columns = [\"item_id\", \"title\", \"release_date\", \"video_release_date\", \"IMDb_URL\"] + genre_list\n","item_metadata = pd.read_csv('ml-100k/u.item', sep='|', encoding='ISO-8859-1', header=None, names=columns, usecols=range(24))\n","\n","# # Menggabungkan metadata dengan dataset utama\n","data = pd.merge(data, item_metadata, on='item_id')\n","\n","# Normalisasi ID pengguna dan item (karena ID asli mungkin tidak dimulai dari 0)\n","data['user_id'] = data['user_id'] - 1\n","data['item_id'] = data['item_id'] - 1\n","\n","# Melihat statistik dataset\n","num_users = data['user_id'].nunique()\n","num_items = data['item_id'].nunique()\n","print(f\"Number of users: {num_users}, Number of items: {num_items}\")\n","\n","# Split dataset menjadi train dan test\n","train_data, test_data = train_test_split(data, test_size=0.2, random_state=42)\n","\n","item_metadata.head()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":411},"id":"c1A17vhhVubf","executionInfo":{"status":"ok","timestamp":1724049863540,"user_tz":-420,"elapsed":4952,"user":{"displayName":"Andys Collection","userId":"04951959771200949138"}},"outputId":"762dffb5-22fe-4cfa-971c-fb62eeec95c8"},"execution_count":6,"outputs":[{"output_type":"stream","name":"stdout","text":["replace ml-100k/allbut.pl? [y]es, [n]o, [A]ll, [N]one, [r]ename: A\n","Number of users: 943, Number of items: 1682\n"]},{"output_type":"execute_result","data":{"text/plain":[" item_id title release_date video_release_date \\\n","0 1 Toy Story (1995) 01-Jan-1995 NaN \n","1 2 GoldenEye (1995) 01-Jan-1995 NaN \n","2 3 Four Rooms (1995) 01-Jan-1995 NaN \n","3 4 Get Shorty (1995) 01-Jan-1995 NaN \n","4 5 Copycat (1995) 01-Jan-1995 NaN \n","\n"," IMDb_URL unknown Action \\\n","0 http://us.imdb.com/M/title-exact?Toy%20Story%2... 0 0 \n","1 http://us.imdb.com/M/title-exact?GoldenEye%20(... 0 1 \n","2 http://us.imdb.com/M/title-exact?Four%20Rooms%... 0 0 \n","3 http://us.imdb.com/M/title-exact?Get%20Shorty%... 0 1 \n","4 http://us.imdb.com/M/title-exact?Copycat%20(1995) 0 0 \n","\n"," Adventure Animation Children's ... Fantasy Film-Noir Horror Musical \\\n","0 0 1 1 ... 0 0 0 0 \n","1 1 0 0 ... 0 0 0 0 \n","2 0 0 0 ... 0 0 0 0 \n","3 0 0 0 ... 0 0 0 0 \n","4 0 0 0 ... 0 0 0 0 \n","\n"," Mystery Romance Sci-Fi Thriller War Western \n","0 0 0 0 0 0 0 \n","1 0 0 0 1 0 0 \n","2 0 0 0 1 0 0 \n","3 0 0 0 0 0 0 \n","4 0 0 0 1 0 0 \n","\n","[5 rows x 24 columns]"],"text/html":["\n","
| \n"," | item_id | \n","title | \n","release_date | \n","video_release_date | \n","IMDb_URL | \n","unknown | \n","Action | \n","Adventure | \n","Animation | \n","Children's | \n","... | \n","Fantasy | \n","Film-Noir | \n","Horror | \n","Musical | \n","Mystery | \n","Romance | \n","Sci-Fi | \n","Thriller | \n","War | \n","Western | \n","
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n","1 | \n","Toy Story (1995) | \n","01-Jan-1995 | \n","NaN | \n","http://us.imdb.com/M/title-exact?Toy%20Story%2... | \n","0 | \n","0 | \n","0 | \n","1 | \n","1 | \n","... | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","
| 1 | \n","2 | \n","GoldenEye (1995) | \n","01-Jan-1995 | \n","NaN | \n","http://us.imdb.com/M/title-exact?GoldenEye%20(... | \n","0 | \n","1 | \n","1 | \n","0 | \n","0 | \n","... | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","1 | \n","0 | \n","0 | \n","
| 2 | \n","3 | \n","Four Rooms (1995) | \n","01-Jan-1995 | \n","NaN | \n","http://us.imdb.com/M/title-exact?Four%20Rooms%... | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","... | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","1 | \n","0 | \n","0 | \n","
| 3 | \n","4 | \n","Get Shorty (1995) | \n","01-Jan-1995 | \n","NaN | \n","http://us.imdb.com/M/title-exact?Get%20Shorty%... | \n","0 | \n","1 | \n","0 | \n","0 | \n","0 | \n","... | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","
| 4 | \n","5 | \n","Copycat (1995) | \n","01-Jan-1995 | \n","NaN | \n","http://us.imdb.com/M/title-exact?Copycat%20(1995) | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","... | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","0 | \n","1 | \n","0 | \n","0 | \n","
5 rows × 24 columns
\n","