{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"2022-01-14-rec-ml1m.ipynb","provenance":[{"file_id":"https://github.com/recohut/nbs/blob/main/raw/P799773%20%7C%20Recommenders%20on%20ML-1m.ipynb","timestamp":1644613230504},{"file_id":"1twXYeRKcQG-wGRCgN4zpwOEAm8MG1vMV","timestamp":1628668676656}],"collapsed_sections":[],"mount_file_id":"1Cy-U9kQbMTIs1BDwqYOA2DdU3xg1YpEv","authorship_tag":"ABX9TyM9iQ1yDn4Q8OR/oXBP6AgR"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["# Recommenders on ML-1m"],"metadata":{"id":"QBLgWidk3oiR"}},{"cell_type":"markdown","source":["## Setup"],"metadata":{"id":"VokPZEtG1Sil"}},{"cell_type":"code","source":["import pandas as pd\n","import numpy as np\n","from sklearn.model_selection import train_test_split\n","from tqdm.notebook import tqdm\n","import math\n","\n","from tensorflow.keras.layers import Input, Dense\n","from tensorflow.keras.models import Model\n","\n","import matplotlib.pyplot as plt"],"metadata":{"id":"Qzecw902yzTt"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## Data"],"metadata":{"id":"jyg_YwQv1VHA"}},{"cell_type":"code","source":["!wget -q --show-progress http://files.grouplens.org/datasets/movielens/ml-1m.zip\n","!unzip ml-1m.zip"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"SM8pU9WtyvVN","executionInfo":{"status":"ok","timestamp":1639029882296,"user_tz":-330,"elapsed":1458,"user":{"displayName":"Sparsh Agarwal","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"13037694610922482904"}},"outputId":"4e376858-3639-43e9-dca0-871dcc759328"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["\rml-1m.zip 0%[ ] 0 --.-KB/s \rml-1m.zip 85%[================> ] 4.81M 24.1MB/s \rml-1m.zip 100%[===================>] 5.64M 27.5MB/s in 0.2s \n","Archive: ml-1m.zip\n"," creating: ml-1m/\n"," inflating: ml-1m/movies.dat \n"," inflating: ml-1m/ratings.dat \n"," inflating: ml-1m/README \n"," inflating: ml-1m/users.dat \n"]}]},{"cell_type":"code","source":["df_ratings = pd.read_csv(\"./ml-1m/ratings.dat\",\n"," sep=\"::\",\n"," header=None,\n"," engine='python',\n"," names=[\"UserID\", \"MovieID\", \"Rating\", \"Timestamp\"])\n","df_ratings.head()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":206},"id":"C7a4g9bKy399","executionInfo":{"status":"ok","timestamp":1639030735099,"user_tz":-330,"elapsed":5966,"user":{"displayName":"Sparsh Agarwal","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"13037694610922482904"}},"outputId":"a5b23854-9921-4589-dc90-b14538f7031c"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","
\n"," \n"," \n"," \n"," UserID \n"," MovieID \n"," Rating \n"," Timestamp \n"," \n"," \n"," \n"," \n"," 0 \n"," 1 \n"," 1193 \n"," 5 \n"," 978300760 \n"," \n"," \n"," 1 \n"," 1 \n"," 661 \n"," 3 \n"," 978302109 \n"," \n"," \n"," 2 \n"," 1 \n"," 914 \n"," 3 \n"," 978301968 \n"," \n"," \n"," 3 \n"," 1 \n"," 3408 \n"," 4 \n"," 978300275 \n"," \n"," \n"," 4 \n"," 1 \n"," 2355 \n"," 5 \n"," 978824291 \n"," \n"," \n","
\n","
"],"text/plain":[" UserID MovieID Rating Timestamp\n","0 1 1193 5 978300760\n","1 1 661 3 978302109\n","2 1 914 3 978301968\n","3 1 3408 4 978300275\n","4 1 2355 5 978824291"]},"metadata":{},"execution_count":4}]},{"cell_type":"code","source":["df_movies = pd.read_csv(\"./ml-1m/movies.dat\",\n"," sep=\"::\",\n"," header=None,\n"," engine='python',\n"," names=[\"MovieID\", \"Title\", \"Genres\"])\n","df_movies.head()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":206},"id":"QeDG1njUy6sx","executionInfo":{"status":"ok","timestamp":1639030735102,"user_tz":-330,"elapsed":45,"user":{"displayName":"Sparsh Agarwal","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"13037694610922482904"}},"outputId":"24a9ba9c-e2a8-4070-d3ed-6cf7860f56cd"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["\n","\n","
\n"," \n"," \n"," \n"," MovieID \n"," Title \n"," Genres \n"," \n"," \n"," \n"," \n"," 0 \n"," 1 \n"," Toy Story (1995) \n"," Animation|Children's|Comedy \n"," \n"," \n"," 1 \n"," 2 \n"," Jumanji (1995) \n"," Adventure|Children's|Fantasy \n"," \n"," \n"," 2 \n"," 3 \n"," Grumpier Old Men (1995) \n"," Comedy|Romance \n"," \n"," \n"," 3 \n"," 4 \n"," Waiting to Exhale (1995) \n"," Comedy|Drama \n"," \n"," \n"," 4 \n"," 5 \n"," Father of the Bride Part II (1995) \n"," Comedy \n"," \n"," \n","
\n","
"],"text/plain":[" MovieID Title Genres\n","0 1 Toy Story (1995) Animation|Children's|Comedy\n","1 2 Jumanji (1995) Adventure|Children's|Fantasy\n","2 3 Grumpier Old Men (1995) Comedy|Romance\n","3 4 Waiting to Exhale (1995) Comedy|Drama\n","4 5 Father of the Bride Part II (1995) Comedy"]},"metadata":{},"execution_count":5}]},{"cell_type":"code","source":["df_users = pd.read_csv(\"./ml-1m/users.dat\",\n"," sep=\"::\",\n"," header=None,\n"," engine='python',\n"," names=[\"UserID\", \"Gender\", \"Age\", \"Occupation\", \"Zip-code\"])\n","df_users.head()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":206},"id":"TMgBHg7Ry-gk","executionInfo":{"status":"ok","timestamp":1639030735105,"user_tz":-330,"elapsed":44,"user":{"displayName":"Sparsh Agarwal","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"13037694610922482904"}},"outputId":"d6fc221e-98a2-44ab-91e4-a4677154a8c9"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["\n","\n","
\n"," \n"," \n"," \n"," UserID \n"," Gender \n"," Age \n"," Occupation \n"," Zip-code \n"," \n"," \n"," \n"," \n"," 0 \n"," 1 \n"," F \n"," 1 \n"," 10 \n"," 48067 \n"," \n"," \n"," 1 \n"," 2 \n"," M \n"," 56 \n"," 16 \n"," 70072 \n"," \n"," \n"," 2 \n"," 3 \n"," M \n"," 25 \n"," 15 \n"," 55117 \n"," \n"," \n"," 3 \n"," 4 \n"," M \n"," 45 \n"," 7 \n"," 02460 \n"," \n"," \n"," 4 \n"," 5 \n"," M \n"," 25 \n"," 20 \n"," 55455 \n"," \n"," \n","
\n","
"],"text/plain":[" UserID Gender Age Occupation Zip-code\n","0 1 F 1 10 48067\n","1 2 M 56 16 70072\n","2 3 M 25 15 55117\n","3 4 M 45 7 02460\n","4 5 M 25 20 55455"]},"metadata":{},"execution_count":6}]},{"cell_type":"code","source":["df_ratings.shape, df_movies.shape, df_users.shape"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"3VUpnZnazAsm","executionInfo":{"status":"ok","timestamp":1639030735108,"user_tz":-330,"elapsed":43,"user":{"displayName":"Sparsh Agarwal","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"13037694610922482904"}},"outputId":"71e9d857-ac35-4382-891c-87cf2cbea1c6"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["((1000209, 4), (3883, 3), (6040, 5))"]},"metadata":{},"execution_count":7}]},{"cell_type":"code","source":["# merge\n","df_ratings_movies = pd.merge(df_ratings, df_movies, on='MovieID')\n","df = pd.merge(df_ratings_movies, df_users, on=\"UserID\")\n","df_raw = df.copy()\n","\n","# drop columns\n","df = df.drop(['Timestamp','Genres','Gender','Age','Occupation','Zip-code'], axis=1)"],"metadata":{"id":"8Z5Mu6QPzB3-"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"sbEoj-MKxyla"},"source":["## Recommend Popular (most-watched) Movies"]},{"cell_type":"code","metadata":{"id":"5rpgzYkHx2YA"},"source":["# Recommend 5 most seen movies\n","def recommend_movie(n):\n"," movie_rank = df['MovieID'].value_counts()[:n]\n"," recommend_movies = df.loc[movie_rank.index]\n"," recommend = recommend_movies['Title']\n"," return recommend"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"WpYPRsWtx6Tq","executionInfo":{"status":"ok","timestamp":1639030735978,"user_tz":-330,"elapsed":18,"user":{"displayName":"Sparsh Agarwal","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"13037694610922482904"}},"outputId":"2e4efcd7-64b2-4165-aae6-6eff4c513bbf"},"source":["recommend_movie(5)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["2858 Muppet Treasure Island (1996)\n","260 Dragonheart (1996)\n","1196 Close Encounters of the Third Kind (1977)\n","1210 Breakfast Club, The (1985)\n","480 Shanghai Noon (2000)\n","Name: Title, dtype: object"]},"metadata":{},"execution_count":10}]},{"cell_type":"markdown","metadata":{"id":"YUg356Eqx7QW"},"source":["Evaluate"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"TOUp5_Z7yBN_","executionInfo":{"status":"ok","timestamp":1639030739176,"user_tz":-330,"elapsed":606,"user":{"displayName":"Sparsh Agarwal","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"13037694610922482904"}},"outputId":"d4e10476-63f3-463a-89ab-378090f41609"},"source":["# Split train, test set\n","x_train, x_test = train_test_split(df, test_size=0.05)\n","\n","# Recommend n most popular movies on a dataset\n","def popular_movie(dataset, n):\n"," movie_rank = dataset['MovieID'].value_counts()[:n]\n"," popular_movies = dataset.iloc[movie_rank.index]\n"," return popular_movies\n","\n","# Calculate hitrate@K\n","def hitrate(K):\n"," raw_ranking = popular_movie(df, K)\n"," pred_ranking = popular_movie(x_test, K)\n"," return raw_ranking['MovieID'].isin(pred_ranking['MovieID']).value_counts(normalize=True)[True]\n","\n","hitrate(100)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["0.07"]},"metadata":{},"execution_count":11}]},{"cell_type":"markdown","metadata":{"id":"2kWNgnmHyipn"},"source":["## Recommend Popular (high-rated) Movies"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"hONKTtwyy6bN","executionInfo":{"status":"ok","timestamp":1639030054352,"user_tz":-330,"elapsed":8,"user":{"displayName":"Sparsh Agarwal","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"13037694610922482904"}},"outputId":"d64742be-963b-4b1f-a761-0e081fa6555c"},"source":["# Recommend 5 movies with high ratings\n","def recommend_movie2(n):\n"," movie_sort = movie_mean.sort_values(ascending=False)[:n]\n"," recommend_movies = df.loc[movie_sort.index]\n"," recommendation = recommend_movies['Title']\n"," return recommendation\n","\n","movie_mean = df.groupby(['MovieID'])['Rating'].mean()\n","recommend_movie2(5)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["MovieID\n","3382 Sneakers (1992)\n","3172 Pi (1998)\n","3607 Candyman (1992)\n","3656 Junk Mail (1997)\n","3280 Teenage Mutant Ninja Turtles (1990)\n","Name: Title, dtype: object"]},"metadata":{},"execution_count":11}]},{"cell_type":"markdown","metadata":{"id":"SV33kdAGzAzC"},"source":["Evaluate"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"yBKgYdWCzDSO","executionInfo":{"status":"ok","timestamp":1639030055490,"user_tz":-330,"elapsed":9,"user":{"displayName":"Sparsh Agarwal","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"13037694610922482904"}},"outputId":"9d96f209-11bf-4b4c-c096-00ecf7b37039"},"source":["# Split train, test set\n","x_train, x_test = train_test_split(df, test_size=0.05)\n","\n","# dRecommend n most popular movies on a dataset\n","def popular_movie(dataset, n):\n"," movie_rank = dataset['MovieID'].value_counts()[:n]\n"," popular_movies = dataset.iloc[movie_rank.index]\n"," return popular_movies\n","\n","# Calculate hitrate@K\n","def hitrate(K):\n"," raw_ranking = popular_movie(df, K)\n"," pred_ranking = popular_movie(x_test, K)\n"," return raw_ranking['MovieID'].isin(pred_ranking['MovieID']).value_counts(normalize=True)[True]\n","\n","hitrate(100)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["0.1"]},"metadata":{},"execution_count":12}]},{"cell_type":"code","metadata":{"id":"i7LBzn1ozbTi"},"source":["# Accuracy calculation\n","def RMSE(y_true, y_pred):\n"," return np.sqrt(np.mean((np.array(y_true) - np.array(y_pred))**2))\n","\n","rmse = []\n","for user in set(df.index):\n"," y_true = df.loc[user]['Rating']\n"," y_pred = movie_mean[df.loc[user]['MovieID']]\n"," accuracy = RMSE(y_true, y_pred)\n"," rmse.append(accuracy)\n","print(np.mean(rmse))"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"Cscb1IJ1zhn3"},"source":["# Split train, test set\n","x = df.copy()\n","y = df['UserID']\n","x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.05,stratify=y)\n","\n","# Accuracy calculation\n","def RMSE(y_true, y_pred):\n"," return np.sqrt(np.mean((np.array(y_true) - np.array(y_pred))**2))\n","\n","# Calculate RMSE by model\n","def score(model):\n"," id_pairs = zip(x_test['UserID'], x_test['MovieID'])\n"," y_pred = np.array([model(user,movie) for (user,movie) in id_pairs])\n"," y_true = np.array(x_test['Rating'])\n"," return RMSE(y_true, y_pred)\n","\n","# Get full matrix with training df\n","rating_matrix = x_train.pivot(index='UserID', columns='MovieID', values='Rating')\n","\n","# The default model for calculating forecasts by the overall mean\n","def best_seller(user_id, movie_id):\n"," try:\n"," rating = train_mean[movie_id]\n"," except:\n"," rating = 3.0\n"," return rating\n","\n","train_mean = x_train.groupby(['MovieID'])['Rating'].mean()\n","score(best_seller)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"emC267Aw0-ZK"},"source":["## Recommend Genre-wise Popular Movies"]},{"cell_type":"code","metadata":{"id":"cP9S3NS-1mp8"},"source":["df = df_raw.copy()"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"94ac4HRM1GHW"},"source":["Data preprocessing (extracting data only from users who have watched more than 50 movies)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":272},"id":"8iv3B9bs1CdO","executionInfo":{"status":"ok","timestamp":1630155524770,"user_tz":-330,"elapsed":758,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"0a0c9584-fd5f-476a-d7bc-07d354f1bb0a"},"source":["count = df['UserID'].value_counts()\n","count_index = count[count > 50]\n","data_pre = df[df['UserID'].isin(count_index)]\n","data_pre.head()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["\n","\n","
\n"," \n"," \n"," \n"," UserID \n"," MovieID \n"," Rating \n"," Timestamp \n"," Title \n"," Genres \n"," Gender \n"," Age \n"," Occupation \n"," Zip-code \n"," \n"," \n"," \n"," \n"," 3025 \n"," 53 \n"," 1193 \n"," 5 \n"," 977946400 \n"," One Flew Over the Cuckoo's Nest (1975) \n"," Drama \n"," M \n"," 25 \n"," 0 \n"," 96931 \n"," \n"," \n"," 3026 \n"," 53 \n"," 661 \n"," 5 \n"," 977979726 \n"," James and the Giant Peach (1996) \n"," Animation|Children's|Musical \n"," M \n"," 25 \n"," 0 \n"," 96931 \n"," \n"," \n"," 3027 \n"," 53 \n"," 914 \n"," 5 \n"," 977979589 \n"," My Fair Lady (1964) \n"," Musical|Romance \n"," M \n"," 25 \n"," 0 \n"," 96931 \n"," \n"," \n"," 3028 \n"," 53 \n"," 2355 \n"," 5 \n"," 977948959 \n"," Bug's Life, A (1998) \n"," Animation|Children's|Comedy \n"," M \n"," 25 \n"," 0 \n"," 96931 \n"," \n"," \n"," 3029 \n"," 53 \n"," 594 \n"," 5 \n"," 977979520 \n"," Snow White and the Seven Dwarfs (1937) \n"," Animation|Children's|Musical \n"," M \n"," 25 \n"," 0 \n"," 96931 \n"," \n"," \n","
\n","
"],"text/plain":[" UserID MovieID Rating Timestamp ... Gender Age Occupation Zip-code\n","3025 53 1193 5 977946400 ... M 25 0 96931\n","3026 53 661 5 977979726 ... M 25 0 96931\n","3027 53 914 5 977979589 ... M 25 0 96931\n","3028 53 2355 5 977948959 ... M 25 0 96931\n","3029 53 594 5 977979520 ... M 25 0 96931\n","\n","[5 rows x 10 columns]"]},"metadata":{},"execution_count":33}]},{"cell_type":"code","metadata":{"id":"pavGGPUb1MYR"},"source":["x_train, x_test = train_test_split(data_pre, test_size=0.05)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"vZ1ZezYU13yN"},"source":["Top-10 most-watched movies for the given genre"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":665},"id":"E7QZyPwN1VmK","executionInfo":{"status":"ok","timestamp":1630155532129,"user_tz":-330,"elapsed":1985,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"7a5d18e5-51be-4056-8189-2442a25b45f3"},"source":["def genre_pop(dataset, genre, n):\n"," dataset_genres = dataset['Genres'].str.get_dummies(\"|\")\n"," select_genre = dataset_genres[dataset_genres[genre]==1]\n"," genre_popmovie = dataset.loc[select_genre.index]\n"," genre_popmovie = genre_popmovie.reset_index()\n"," genre_popmovie_rank = genre_popmovie['MovieID'].value_counts()[:n]\n"," recomm_movie = genre_popmovie.loc[genre_popmovie_rank.index]\n"," return recomm_movie\n","\n","genre_pop(x_train, 'Comedy', 10)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["\n","\n","
\n"," \n"," \n"," \n"," index \n"," UserID \n"," MovieID \n"," Rating \n"," Timestamp \n"," Title \n"," Genres \n"," Gender \n"," Age \n"," Occupation \n"," Zip-code \n"," \n"," \n"," \n"," \n"," 2858 \n"," 27923 \n"," 411 \n"," 2375 \n"," 2 \n"," 978453240 \n"," Money Pit, The (1986) \n"," Comedy \n"," F \n"," 45 \n"," 1 \n"," 43214 \n"," \n"," \n"," 1580 \n"," 881266 \n"," 873 \n"," 3076 \n"," 3 \n"," 975438076 \n"," Irma la Douce (1963) \n"," Comedy \n"," M \n"," 56 \n"," 6 \n"," 19027 \n"," \n"," \n"," 1270 \n"," 14433 \n"," 235 \n"," 497 \n"," 4 \n"," 977100643 \n"," Much Ado About Nothing (1993) \n"," Comedy|Romance \n"," M \n"," 25 \n"," 0 \n"," 98153 \n"," \n"," \n"," 1197 \n"," 457671 \n"," 78 \n"," 156 \n"," 2 \n"," 978570873 \n"," Blue in the Face (1995) \n"," Comedy \n"," F \n"," 45 \n"," 1 \n"," 98029 \n"," \n"," \n"," 2396 \n"," 65764 \n"," 934 \n"," 322 \n"," 4 \n"," 975184082 \n"," Swimming with Sharks (1995) \n"," Comedy|Drama \n"," F \n"," 35 \n"," 7 \n"," 97401 \n"," \n"," \n"," 1265 \n"," 918127 \n"," 405 \n"," 1304 \n"," 4 \n"," 976388574 \n"," Butch Cassidy and the Sundance Kid (1969) \n"," Action|Comedy|Western \n"," M \n"," 56 \n"," 1 \n"," 13077 \n"," \n"," \n"," 2997 \n"," 20875 \n"," 317 \n"," 2000 \n"," 4 \n"," 976460939 \n"," Lethal Weapon (1987) \n"," Action|Comedy|Crime|Drama \n"," M \n"," 35 \n"," 7 \n"," 38555 \n"," \n"," \n"," 356 \n"," 792823 \n"," 263 \n"," 2791 \n"," 3 \n"," 976652161 \n"," Airplane! (1980) \n"," Comedy \n"," F \n"," 25 \n"," 7 \n"," 22304 \n"," \n"," \n"," 1 \n"," 19274 \n"," 301 \n"," 1377 \n"," 4 \n"," 976504613 \n"," Batman Returns (1992) \n"," Action|Adventure|Comedy|Crime \n"," M \n"," 18 \n"," 4 \n"," 61820 \n"," \n"," \n"," 2791 \n"," 86609 \n"," 1169 \n"," 153 \n"," 2 \n"," 974861777 \n"," Batman Forever (1995) \n"," Action|Adventure|Comedy|Crime \n"," M \n"," 25 \n"," 20 \n"," 94402 \n"," \n"," \n","
\n","
"],"text/plain":[" index UserID MovieID Rating ... Gender Age Occupation Zip-code\n","2858 27923 411 2375 2 ... F 45 1 43214\n","1580 881266 873 3076 3 ... M 56 6 19027\n","1270 14433 235 497 4 ... M 25 0 98153\n","1197 457671 78 156 2 ... F 45 1 98029\n","2396 65764 934 322 4 ... F 35 7 97401\n","1265 918127 405 1304 4 ... M 56 1 13077\n","2997 20875 317 2000 4 ... M 35 7 38555\n","356 792823 263 2791 3 ... F 25 7 22304\n","1 19274 301 1377 4 ... M 18 4 61820\n","2791 86609 1169 153 2 ... M 25 20 94402\n","\n","[10 rows x 11 columns]"]},"metadata":{},"execution_count":35}]},{"cell_type":"markdown","metadata":{"id":"7beDLdyr1Wgy"},"source":["User's genre ranking in the training set"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"gvPKFhkS2GFo","executionInfo":{"status":"ok","timestamp":1630155631792,"user_tz":-330,"elapsed":520,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"34c386ee-5dd5-45bb-f78a-ae483dbd7ba8"},"source":["def user_genre(dataset, userid):\n"," user_data = dataset[dataset['UserID']==userid]\n"," user_data_genres = user_data['Genres'].str.get_dummies(\"|\")\n"," user_genre_ranking = user_data_genres.sum().sort_values(ascending=False)\n"," return user_genre_ranking\n","\n","user_genre(x_train, 54)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["Comedy 36\n","Drama 11\n","Western 4\n","Romance 4\n","Children's 3\n","Sci-Fi 2\n","Crime 2\n","Action 2\n","War 1\n","Thriller 1\n","Mystery 1\n","Musical 1\n","Horror 1\n","Fantasy 1\n","Animation 1\n","Adventure 1\n","dtype: int64"]},"metadata":{},"execution_count":36}]},{"cell_type":"markdown","metadata":{"id":"yRSmOnzY2OZ6"},"source":["Recommend by genre"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":255},"id":"9jHEptFJ2RAW","executionInfo":{"status":"ok","timestamp":1630155677945,"user_tz":-330,"elapsed":2682,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"fcbf1901-5a8f-4ebb-9bf0-044d3cd3680c"},"source":["def user_genre_recommend(dataset, userid, n):\n"," genre_pref = user_genre(dataset, userid)\n"," recomm = genre_pop(dataset, genre_pref.index[0], n)\n"," return recomm\n","\n","user_genre_recommend(x_train, 54, 5)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["\n","\n","
\n"," \n"," \n"," \n"," index \n"," UserID \n"," MovieID \n"," Rating \n"," Timestamp \n"," Title \n"," Genres \n"," Gender \n"," Age \n"," Occupation \n"," Zip-code \n"," \n"," \n"," \n"," \n"," 2858 \n"," 27923 \n"," 411 \n"," 2375 \n"," 2 \n"," 978453240 \n"," Money Pit, The (1986) \n"," Comedy \n"," F \n"," 45 \n"," 1 \n"," 43214 \n"," \n"," \n"," 1580 \n"," 881266 \n"," 873 \n"," 3076 \n"," 3 \n"," 975438076 \n"," Irma la Douce (1963) \n"," Comedy \n"," M \n"," 56 \n"," 6 \n"," 19027 \n"," \n"," \n"," 1270 \n"," 14433 \n"," 235 \n"," 497 \n"," 4 \n"," 977100643 \n"," Much Ado About Nothing (1993) \n"," Comedy|Romance \n"," M \n"," 25 \n"," 0 \n"," 98153 \n"," \n"," \n"," 1197 \n"," 457671 \n"," 78 \n"," 156 \n"," 2 \n"," 978570873 \n"," Blue in the Face (1995) \n"," Comedy \n"," F \n"," 45 \n"," 1 \n"," 98029 \n"," \n"," \n"," 2396 \n"," 65764 \n"," 934 \n"," 322 \n"," 4 \n"," 975184082 \n"," Swimming with Sharks (1995) \n"," Comedy|Drama \n"," F \n"," 35 \n"," 7 \n"," 97401 \n"," \n"," \n","
\n","
"],"text/plain":[" index UserID MovieID Rating ... Gender Age Occupation Zip-code\n","2858 27923 411 2375 2 ... F 45 1 43214\n","1580 881266 873 3076 3 ... M 56 6 19027\n","1270 14433 235 497 4 ... M 25 0 98153\n","1197 457671 78 156 2 ... F 45 1 98029\n","2396 65764 934 322 4 ... F 35 7 97401\n","\n","[5 rows x 11 columns]"]},"metadata":{},"execution_count":37}]},{"cell_type":"markdown","metadata":{"id":"SuzCJPL42ZO_"},"source":["Evaluation"]},{"cell_type":"markdown","metadata":{"id":"WtlW0OJ62aas"},"source":["Ignoring genre"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"I_VLJr462dMi","executionInfo":{"status":"ok","timestamp":1630157569004,"user_tz":-330,"elapsed":1149,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"7d6244f7-db91-452e-9e4d-77755d854659"},"source":["def popular_movie(dataset, n):\n"," movie_rank = dataset['MovieID'].value_counts()[:n]\n"," popular_movies = dataset.iloc[movie_rank.index]\n"," return popular_movies\n","\n","def hitrate1(K):\n"," raw_ranking = popular_movie(df, K)\n"," pred_ranking = popular_movie(x_test, K)\n"," return raw_ranking['MovieID'].isin(pred_ranking['MovieID']).value_counts(normalize=True)[True]\n","\n","s = 0\n","for i in range (100):\n"," s += hitrate1(100)\n","s /= 100\n","s"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["0.08000000000000006"]},"metadata":{},"execution_count":42}]},{"cell_type":"markdown","metadata":{"id":"nMpUYkdQ2evo"},"source":["Considering genre"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"B2xUHjRg2xWQ","executionInfo":{"status":"ok","timestamp":1630158240486,"user_tz":-330,"elapsed":377175,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"2ceeb35c-627e-4633-abc9-58e47ecc7f4e"},"source":["def user_genre_recommend(dataset, userid, n):\n"," genre_pref = user_genre(dataset, userid)\n"," recomm = genre_pop(dataset, genre_pref.index[0], n)\n"," return recomm\n","\n","def hitrate2(K):\n"," user = x_train.sample(n=1)['UserID'].values[0]\n"," raw_recomm = user_genre_recommend(data_pre, user, K)\n"," pred_recomm = user_genre_recommend(x_train, user, K)\n"," return raw_recomm['MovieID'].isin(pred_recomm['MovieID']).value_counts(normalize=True)[True]\n","\n","s = 0\n","count = 0\n","while count!=100:\n"," try:\n"," _s = hitrate2(100)\n"," count+=1\n"," except:\n"," pass\n"," if count%10==0:\n"," print(count)\n"," s += _s\n","s /= 100\n","s"],"execution_count":null,"outputs":[{"output_type":"stream","text":["10\n","20\n","30\n","40\n","50\n","60\n","70\n","80\n","90\n","100\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/plain":["0.2126000000000003"]},"metadata":{},"execution_count":45}]},{"cell_type":"markdown","metadata":{"id":"--pOiaTD_GOv"},"source":["## Recommend Popular movies by user occupation and age"]},{"cell_type":"code","source":["df = df_raw.copy()\n","\n","# drop columns\n","df = df.drop(['Timestamp','Gender','Zip-code'], axis=1)\n","\n","# leave only data with a rating of 3 or higher\n","data_pre = df[df['Rating'] > 2]"],"metadata":{"id":"jM4Z9wPE05Km"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["x_train, x_test = train_test_split(data_pre, test_size=0.05)"],"metadata":{"id":"X0rucNWx08KC"},"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":204},"id":"KCuNZY26_bAt","executionInfo":{"status":"ok","timestamp":1630158058729,"user_tz":-330,"elapsed":967,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"ca169ded-3f82-4d49-c9af-0af2b59cb012"},"source":["# Recommend n popular movies by occupation\n","def occu_pop(dataset, occu, n):\n"," data_occu = dataset[dataset['Occupation'] == occu]\n"," data_occu = data_occu.reset_index()\n"," occu_pop_rank = data_occu['MovieID'].value_counts()[:n]\n"," recommend_movies = data_occu.loc[occu_pop_rank.index]\n"," return recommend_movies\n","\n","# Recommend n movies depending on user's occupation\n","def user_occu_recommend(dataset, userid, n):\n"," user_occu = dataset[dataset['UserID'] == userid]['Occupation'].values[0]\n"," recomm = occu_pop(dataset, user_occu, n)\n"," return recomm\n"," \n","user_occu_recommend(x_train, 46, 5)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["\n","\n","
\n"," \n"," \n"," \n"," index \n"," UserID \n"," MovieID \n"," Rating \n"," Title \n"," Genres \n"," Age \n"," Occupation \n"," \n"," \n"," \n"," \n"," 2858 \n"," 488471 \n"," 1851 \n"," 555 \n"," 4 \n"," True Romance (1993) \n"," Action|Crime|Romance \n"," 25 \n"," 19 \n"," \n"," \n"," 2571 \n"," 954169 \n"," 2811 \n"," 247 \n"," 4 \n"," Heavenly Creatures (1994) \n"," Drama|Fantasy|Romance|Thriller \n"," 25 \n"," 19 \n"," \n"," \n"," 260 \n"," 917056 \n"," 2082 \n"," 2432 \n"," 3 \n"," Stepmom (1998) \n"," Drama \n"," 1 \n"," 19 \n"," \n"," \n"," 608 \n"," 488539 \n"," 1851 \n"," 2011 \n"," 3 \n"," Back to the Future Part II (1989) \n"," Comedy|Sci-Fi \n"," 25 \n"," 19 \n"," \n"," \n"," 1210 \n"," 829307 \n"," 2906 \n"," 1198 \n"," 3 \n"," Raiders of the Lost Ark (1981) \n"," Action|Adventure \n"," 35 \n"," 19 \n"," \n"," \n","
\n","
"],"text/plain":[" index UserID MovieID ... Genres Age Occupation\n","2858 488471 1851 555 ... Action|Crime|Romance 25 19\n","2571 954169 2811 247 ... Drama|Fantasy|Romance|Thriller 25 19\n","260 917056 2082 2432 ... Drama 1 19\n","608 488539 1851 2011 ... Comedy|Sci-Fi 25 19\n","1210 829307 2906 1198 ... Action|Adventure 35 19\n","\n","[5 rows x 8 columns]"]},"metadata":{},"execution_count":14}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":204},"id":"wXpC7oQG_eyl","executionInfo":{"status":"ok","timestamp":1630158089448,"user_tz":-330,"elapsed":883,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"884637c3-af6d-4e0c-8c90-9e74b9e63654"},"source":["# Recommend n popular movies by age group\n","def age_pop(dataset, age, n):\n"," data_age = dataset[dataset['Age'] == age]\n"," data_age = data_age.reset_index()\n"," age_pop_rank = data_age['MovieID'].value_counts()[:n]\n"," recommend_movies = data_age.loc[age_pop_rank.index]\n"," return recommend_movies\n","\n","# Recommend n movies based on user's age\n","def user_age_recommend(dataset, userid, n):\n"," user_age = dataset[dataset['UserID'] == userid]['Age'].values[0]\n"," recomm = age_pop(dataset, user_age, n)\n"," return recomm\n","\n","user_age_recommend(x_train, 46, 5)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["\n","\n","
\n"," \n"," \n"," \n"," index \n"," UserID \n"," MovieID \n"," Rating \n"," Title \n"," Genres \n"," Age \n"," Occupation \n"," \n"," \n"," \n"," \n"," 2858 \n"," 917767 \n"," 5444 \n"," 2724 \n"," 4 \n"," Runaway Bride (1999) \n"," Comedy|Romance \n"," 18 \n"," 4 \n"," \n"," \n"," 1210 \n"," 27339 \n"," 409 \n"," 608 \n"," 5 \n"," Fargo (1996) \n"," Crime|Drama|Thriller \n"," 18 \n"," 12 \n"," \n"," \n"," 1196 \n"," 566939 \n"," 2968 \n"," 2291 \n"," 4 \n"," Edward Scissorhands (1990) \n"," Drama|Romance \n"," 18 \n"," 0 \n"," \n"," \n"," 260 \n"," 858428 \n"," 4592 \n"," 2672 \n"," 4 \n"," Thirteenth Floor, The (1999) \n"," Drama|Sci-Fi|Thriller \n"," 18 \n"," 4 \n"," \n"," \n"," 2571 \n"," 506553 \n"," 3312 \n"," 3861 \n"," 3 \n"," Replacements, The (2000) \n"," Comedy \n"," 18 \n"," 4 \n"," \n"," \n","
\n","
"],"text/plain":[" index UserID MovieID ... Genres Age Occupation\n","2858 917767 5444 2724 ... Comedy|Romance 18 4\n","1210 27339 409 608 ... Crime|Drama|Thriller 18 12\n","1196 566939 2968 2291 ... Drama|Romance 18 0\n","260 858428 4592 2672 ... Drama|Sci-Fi|Thriller 18 4\n","2571 506553 3312 3861 ... Comedy 18 4\n","\n","[5 rows x 8 columns]"]},"metadata":{},"execution_count":15}]},{"cell_type":"markdown","metadata":{"id":"KV94gx1P_mYO"},"source":["Evaluation\n","\n","Against Popularity baseline"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":83,"referenced_widgets":["2cd0a08aa8874ccba9ed7a620ff126f7","e47575e47f2d48beb18a526a9a29fd86","109bf2c4a72d45fd8b32c9c7054cd689","9291b2228d874ddbbef72052a322d3aa","8b28e746b5ca4cdbb3a804f4a450111f","48606b2370024685bf118fba84ca3a75","ebad54c8bbba40299fdd784588876c64","dbb95cb5ea5e45f08a81c6d81e703b94","c2c8be8f08e344959383284b48834b89","8fcb107f4f7e44c69493b2fb7b5fd0c1","36a37abe4b2145f5966a03f0d0c323b5"]},"id":"MkCy5CVT_n6w","executionInfo":{"status":"ok","timestamp":1630162834524,"user_tz":-330,"elapsed":848485,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"4eec2bc0-99f8-4711-93f8-e5e96fb1ccab"},"source":["def popular_movie(dataset, n):\n"," data_pop = dataset.copy()\n"," movie_rank = data_pop['MovieID'].value_counts()[:n]\n"," return movie_rank\n","\n","def hitrate1(K):\n"," raw_ranking = popular_movie(data_pre, K)\n"," pred_ranking = popular_movie(x_test, K)\n"," return pd.DataFrame(raw_ranking.index.isin(pred_ranking.index)).value_counts(normalize=True)[True]\n","\n","s = 0\n","for i in tqdm(range(len(x_test.index))):\n"," s += hitrate1(100)\n","s /= len(x_test.index)\n","s"],"execution_count":null,"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"2cd0a08aa8874ccba9ed7a620ff126f7","version_major":2,"version_minor":0},"text/plain":[" 0%| | 0/41824 [00:00, ?it/s]"]},"metadata":{},"output_type":"display_data"},{"output_type":"execute_result","data":{"text/plain":["True 0.89\n","dtype: float64"]},"metadata":{},"execution_count":22}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":83,"referenced_widgets":["1d93d22c0997400d9a131eaeddda3fcc","cd55996c6ccd4b44b6c9086588aadc4b","94a40cbd77054fe2b16a5165784c871f","13bea89fdf9c4ac4b919680bc449a3a4","5a709d16124d4b148c7d7b53f176a377","6e3d67a851b14b73aa9cdb6b37f397d8","6b6f013e0a5741a7a8e80be2062015a0","fbd8372847fd4813a3511c73509acedc","8dadfeb102124fb1bb6edf8eb19ceb01","439eda0a39bc4698a620b13d3420955d","198285cc07e54d2188a50856e639c8f5"]},"id":"QebIBzON_y4r","executionInfo":{"status":"ok","timestamp":1630159053287,"user_tz":-330,"elapsed":660481,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"5d72dabb-ea2f-4dd5-bcf4-449b258b3128"},"source":["def occu_pop(dataset, occu, n):\n"," data_occu = dataset[dataset['Occupation'] == occu]\n"," occu_pop_rank = data_occu['MovieID'].value_counts()[:n]\n"," return occu_pop_rank\n","\n","def user_occu_recommend(dataset, userid, n):\n"," user_occu = dataset[dataset['UserID'] == userid]['Occupation'].values[0]\n"," recomm = occu_pop(dataset, user_occu, n)\n"," return recomm\n","\n","def hitrate2(user, K):\n"," raw_recomm = user_occu_recommend(data_pre, user, K)\n"," pred_recomm = user_occu_recommend(x_test, user, K)\n"," return pd.DataFrame(raw_recomm.index.isin(pred_recomm.index)).value_counts(normalize=True)[True]\n","\n","s = 0\n","for i in tqdm(x_test['UserID'].index):\n"," s += hitrate2(x_test['UserID'][i], 100)\n","s /= len(x_test.index)\n","s"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"application/vnd.jupyter.widget-view+json":{"model_id":"1d93d22c0997400d9a131eaeddda3fcc","version_minor":0,"version_major":2},"text/plain":[" 0%| | 0/41824 [00:00, ?it/s]"]},"metadata":{}},{"output_type":"execute_result","data":{"text/plain":["True 0.586918\n","dtype: float64"]},"metadata":{},"execution_count":20}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":83,"referenced_widgets":["49882314eac44be7b131a68e86e92927","0bb9d1b66013481aa1d61c2c73b836f0","6848963ca083432097cc177512408147","535d60ae572f41b0a95b04b633336ce7","13796c34226d40e2b6108837126b891d","f432e220b999418e971f4cbd4950657a","c8ee7cdb6cb3423bb67e104f1060c35a","adb2e8da8b89406e96bd4ce520c2adcd","ade45857baf64618a1a853a6addb7a0b","149455b7acd54506aeecf5ceba4c3f74","bcf482338b70489db9594a864e6b6e92"]},"id":"zjEHWwz1_30K","executionInfo":{"status":"ok","timestamp":1630161414008,"user_tz":-330,"elapsed":2352388,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"0d9b3a8b-9760-45dd-9407-8efcc11c270f"},"source":["def age_pop(dataset, age, n):\n"," data_age = dataset[dataset['Age'] == age]\n"," data_age = data_age.reset_index()\n"," age_pop_rank = data_age['MovieID'].value_counts()[:n]\n"," return age_pop_rank\n","\n","def user_age_recommend(dataset, userid, n):\n"," user_age = dataset[dataset['UserID'] == userid]['Age'].values[0]\n"," recomm = age_pop(dataset, user_age, n)\n"," return recomm\n","\n","def hitrate3(user, K):\n"," raw_recomm = user_age_recommend(data_pre, user, K)\n"," pred_recomm = user_age_recommend(x_train, user, K)\n"," return pd.DataFrame(raw_recomm.index.isin(pred_recomm.index)).value_counts(normalize=True)[True]\n","\n","s = 0\n","for i in tqdm(x_test['UserID'].index):\n"," s += hitrate3(x_test['UserID'][i], 100)\n","s /= len(x_test.index)\n","s"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"application/vnd.jupyter.widget-view+json":{"model_id":"49882314eac44be7b131a68e86e92927","version_minor":0,"version_major":2},"text/plain":[" 0%| | 0/41824 [00:00, ?it/s]"]},"metadata":{}},{"output_type":"execute_result","data":{"text/plain":["True 0.983196\n","dtype: float64"]},"metadata":{},"execution_count":21}]},{"cell_type":"markdown","source":["## Autoencoder-based Model"],"metadata":{"id":"Ewa4TIIf1LSe"}},{"cell_type":"code","source":["df = df_ratings.copy()\n","df.columns = ['user_id', 'movie_id', 'rating', 'unix_timestamp']"],"metadata":{"id":"SqSIjz1T1NpK"},"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"ugBiqIpiB5st"},"source":["df = df.drop('unix_timestamp', 1)\n","\n","input_df = pd.DataFrame(index=range(1,max(df['user_id'])+1), columns=range(1,max(df['movie_id'])+1))\n","\n","for index,row in df.iterrows():\n"," input_df[row['movie_id']][row['user_id']]=row['rating']\n","\n","print(input_df.shape)\n","input_df"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"V5GrFhjmCV7w","executionInfo":{"status":"ok","timestamp":1630159085828,"user_tz":-330,"elapsed":526,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"c9f1f48f-0e85-4e33-ca17-c601d5a6fa24"},"source":["input_df = input_df.truncate(after=64, axis=1)\n","input_df = input_df.dropna(axis=0, how='all')\n","mean_col = input_df.mean(axis=1)\n","input_df.shape"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(4811, 64)"]},"metadata":{},"execution_count":13}]},{"cell_type":"markdown","metadata":{"id":"MwULNSpWDs96"},"source":["### User Similarity"]},{"cell_type":"code","metadata":{"id":"ZS0xlKUeDCzG"},"source":["def user_similarity(a,b):\n"," if (not a in input_df.index or not b in input_df.index):\n"," return np.nan\n"," cov = 0.0\n"," var_a = 0.0\n"," var_b = 0.0\n"," for column in input_df:\n"," avg_rating_a = mean_col[a]\n"," avg_rating_b = mean_col[b]\n"," j_rating_a = input_df[column][a]\n"," j_rating_b = input_df[column][b]\n"," \n"," if (not np.isnan(j_rating_a) and not np.isnan(j_rating_b)):\n"," cov = cov + (j_rating_a - avg_rating_a) * (j_rating_b - avg_rating_b)\n"," var_a = var_a + (j_rating_a - avg_rating_a) * (j_rating_a - avg_rating_a)\n"," var_b = var_b + (j_rating_b - avg_rating_b) * (j_rating_b - avg_rating_b)\n"," if (var_a == 0 or var_b == 0):\n"," return 0\n"," return (cov/(math.sqrt(var_a*var_b)))"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":168,"referenced_widgets":["55e1acdf6b4442bda6e21f4816edacaf","ddaf385d826c43c89207c2c4b9ab5c0f","a236d5fe10944da491cee35dadf6ce34","38189709ad334d1399edc9dbb3315975","e850d6a06aa745c5906a2f3deb2739dc","59423e1d2c4f486c9a3d0eed4d90f02e","19d45bc6519a4ae6b9b23620fd9e3b6e","f6c3d94e650244979f974e593c6a907d","a06659608ffc4e98bd29a337067eedd4","4f90565fc8974adb8de9d49beefcd966","3884e7b460b248e48620b983fd7a4873"]},"id":"-xHy5LnPDa22","executionInfo":{"status":"ok","timestamp":1630159584754,"user_tz":-330,"elapsed":467130,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"9c3bb88e-e988-45e8-87c6-ba07d5c1912a"},"source":["sim = np.zeros(shape=(max(df['user_id']), max(df['user_id'])))\n","num_of_users = max(df['user_id'])\n","it = 0\n","\n","for i in tqdm(range(num_of_users)):\n"," for j in range(i+1):\n"," sim[i][j] = user_similarity(i+1, j+1)\n"," sim[j][i] = sim[i][j]\n","sim"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"application/vnd.jupyter.widget-view+json":{"model_id":"55e1acdf6b4442bda6e21f4816edacaf","version_minor":0,"version_major":2},"text/plain":[" 0%| | 0/6040 [00:00, ?it/s]"]},"metadata":{}},{"output_type":"execute_result","data":{"text/plain":["array([[ 0., 0., nan, ..., nan, 0., 0.],\n"," [ 0., 0., nan, ..., nan, 0., 0.],\n"," [nan, nan, nan, ..., nan, nan, nan],\n"," ...,\n"," [nan, nan, nan, ..., nan, nan, nan],\n"," [ 0., 0., nan, ..., nan, 0., 0.],\n"," [ 0., 0., nan, ..., nan, 0., 1.]])"]},"metadata":{},"execution_count":18}]},{"cell_type":"markdown","metadata":{"id":"mcl_NZNjDbtQ"},"source":["### Column Rating"]},{"cell_type":"code","metadata":{"id":"bpkNHhFoDxTU"},"source":["def round_off_rating(val):\n"," new_val = int(val)\n"," frac = val - int(val)\n"," if (frac >= 0.75):\n"," new_val = new_val + 1\n"," elif (frac >= 0.25):\n"," new_val = new_val + 0.5\n"," return max(min(new_val, 5.0), 1)\n","\n","def predict_column_rating(column_no):\n"," temp = input_df[input_df[column_no].notnull()][column_no]\n"," for index, null_rating in input_df[column_no].iteritems():\n"," num_sum = 0\n"," den_sum = 0\n"," if (np.isnan(null_rating)):\n"," for i,rating in temp.iteritems():\n"," num_sum = num_sum + sim[index-1][i-1] * (rating - mean_col[i])\n"," den_sum = den_sum + sim[index-1][i-1]\n"," if (den_sum == 0):\n"," input_df[column_no][index] = round_off_rating(mean_col[index])\n"," else:\n"," input_df[column_no][index] = round_off_rating(mean_col[index] + num_sum/den_sum)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"LmGagn0SDzYj"},"source":["for column_no in input_df:\n"," predict_column_rating(column_no)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":439},"id":"-e2PhfNzMtgX","executionInfo":{"status":"ok","timestamp":1630161527521,"user_tz":-330,"elapsed":653,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"6234f81e-fe15-4c7e-8c65-a44376984be0"},"source":["input_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["\n","\n","
\n"," \n"," \n"," \n"," 1 \n"," 2 \n"," 3 \n"," 4 \n"," 5 \n"," 6 \n"," 7 \n"," 8 \n"," 9 \n"," 10 \n"," 11 \n"," 12 \n"," 13 \n"," 14 \n"," 15 \n"," 16 \n"," 17 \n"," 18 \n"," 19 \n"," 20 \n"," 21 \n"," 22 \n"," 23 \n"," 24 \n"," 25 \n"," 26 \n"," 27 \n"," 28 \n"," 29 \n"," 30 \n"," 31 \n"," 32 \n"," 33 \n"," 34 \n"," 35 \n"," 36 \n"," 37 \n"," 38 \n"," 39 \n"," 40 \n"," 41 \n"," 42 \n"," 43 \n"," 44 \n"," 45 \n"," 46 \n"," 47 \n"," 48 \n"," 49 \n"," 50 \n"," 51 \n"," 52 \n"," 53 \n"," 54 \n"," 55 \n"," 56 \n"," 57 \n"," 58 \n"," 59 \n"," 60 \n"," 61 \n"," 62 \n"," 63 \n"," 64 \n"," \n"," \n"," \n"," \n"," 1 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," 5 \n"," \n"," \n"," 2 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," \n"," \n"," 5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 2 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 1 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 5 \n"," 3.5 \n"," 3.5 \n"," 4 \n"," 3.5 \n"," 4 \n"," 3.5 \n"," 3 \n"," 3.5 \n"," 3.5 \n"," 3 \n"," 3.5 \n"," 4 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3 \n"," 3.5 \n"," 3.5 \n"," 5 \n"," 3.5 \n"," 2 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," \n"," \n"," 6 \n"," 4 \n"," 4 \n"," 4 \n"," 3.5 \n"," 3.5 \n"," 4.5 \n"," 4 \n"," 3.5 \n"," 3 \n"," 4 \n"," 4.5 \n"," 3 \n"," 4 \n"," 4 \n"," 3 \n"," 4.5 \n"," 4 \n"," 4 \n"," 3 \n"," 3.5 \n"," 4 \n"," 4 \n"," 3 \n"," 3.5 \n"," 4 \n"," 4.5 \n"," 3.5 \n"," 4.5 \n"," 4.5 \n"," 3.5 \n"," 4 \n"," 4.5 \n"," 3.5 \n"," 4 \n"," 3.5 \n"," 4.5 \n"," 4 \n"," 3 \n"," 4 \n"," 3.5 \n"," 4 \n"," 3.5 \n"," 4 \n"," 3.5 \n"," 4 \n"," 3.5 \n"," 4.5 \n"," 5 \n"," 5 \n"," 5 \n"," 4.5 \n"," 4 \n"," 5 \n"," 3 \n"," 4.5 \n"," 1 \n"," 4 \n"," 4.5 \n"," 3.5 \n"," 4 \n"," 3 \n"," 4.5 \n"," 3.5 \n"," 3 \n"," \n"," \n"," 7 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," 4 \n"," \n"," \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," \n"," \n"," 6035 \n"," 4 \n"," 2.5 \n"," 1 \n"," 2 \n"," 1 \n"," 3 \n"," 3 \n"," 2 \n"," 1.5 \n"," 2.5 \n"," 4 \n"," 1.5 \n"," 2.5 \n"," 2.5 \n"," 1.5 \n"," 3 \n"," 3 \n"," 2.5 \n"," 1.5 \n"," 2 \n"," 2 \n"," 2.5 \n"," 1.5 \n"," 2 \n"," 1 \n"," 2 \n"," 2 \n"," 3 \n"," 3 \n"," 2 \n"," 2 \n"," 4 \n"," 2 \n"," 3 \n"," 1.5 \n"," 3 \n"," 2.5 \n"," 1.5 \n"," 2.5 \n"," 2 \n"," 2.5 \n"," 3 \n"," 2.5 \n"," 2 \n"," 2.5 \n"," 2 \n"," 3 \n"," 2 \n"," 3.5 \n"," 3.5 \n"," 2.5 \n"," 2.5 \n"," 3 \n"," 1.5 \n"," 2.5 \n"," 1 \n"," 2.5 \n"," 5 \n"," 2 \n"," 2.5 \n"," 1.5 \n"," 4 \n"," 2 \n"," 1.5 \n"," \n"," \n"," 6036 \n"," 3 \n"," 3 \n"," 3 \n"," 2 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 4 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 2 \n"," 4 \n"," 3 \n"," 3 \n"," 4 \n"," 3 \n"," 4 \n"," 3 \n"," 3 \n"," 3 \n"," 5 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 4 \n"," 3 \n"," 3 \n"," 3 \n"," 4 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 1 \n"," 3 \n"," 3 \n"," \n"," \n"," 6037 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 4 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3 \n"," 3.5 \n"," 3 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 4 \n"," 3.5 \n"," 3.5 \n"," 4 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," \n"," \n"," 6039 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," \n"," \n"," 6040 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3 \n"," 3.5 \n"," 3.5 \n"," 3 \n"," 2.5 \n"," 3.5 \n"," 3.5 \n"," 2 \n"," 3.5 \n"," 3.5 \n"," 2.5 \n"," 3.5 \n"," 3 \n"," 3.5 \n"," 2.5 \n"," 2.5 \n"," 3.5 \n"," 3.5 \n"," 2.5 \n"," 3 \n"," 3 \n"," 4 \n"," 3 \n"," 4 \n"," 4 \n"," 3 \n"," 3 \n"," 4 \n"," 3 \n"," 4 \n"," 2.5 \n"," 4 \n"," 3.5 \n"," 2 \n"," 3 \n"," 2.5 \n"," 3.5 \n"," 3 \n"," 3.5 \n"," 2.5 \n"," 3 \n"," 3 \n"," 4 \n"," 3 \n"," 4.5 \n"," 4 \n"," 3.5 \n"," 3.5 \n"," 4 \n"," 2.5 \n"," 3.5 \n"," 1 \n"," 3.5 \n"," 5 \n"," 2.5 \n"," 3 \n"," 2 \n"," 3.5 \n"," 2.5 \n"," 2.5 \n"," \n"," \n","
\n","
4811 rows × 64 columns
\n","
"],"text/plain":[" 1 2 3 4 5 6 7 ... 58 59 60 61 62 63 64\n","1 5 5 5 5 5 5 5 ... 5 5 5 5 5 5 5\n","2 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1\n","5 3.5 3.5 3.5 3.5 3.5 2 3.5 ... 3.5 3.5 3.5 3.5 3.5 3.5 3.5\n","6 4 4 4 3.5 3.5 4.5 4 ... 4.5 3.5 4 3 4.5 3.5 3\n","7 4 4 4 4 4 4 4 ... 4 4 4 4 4 4 4\n","... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...\n","6035 4 2.5 1 2 1 3 3 ... 5 2 2.5 1.5 4 2 1.5\n","6036 3 3 3 2 3 3 3 ... 3 3 3 3 1 3 3\n","6037 3.5 3.5 3.5 3.5 3.5 3.5 3.5 ... 3.5 3.5 3.5 3.5 3.5 3.5 3.5\n","6039 3 3 3 3 3 3 3 ... 3 3 3 3 3 3 3\n","6040 3 3 3 3 3 3.5 3.5 ... 5 2.5 3 2 3.5 2.5 2.5\n","\n","[4811 rows x 64 columns]"]},"metadata":{},"execution_count":22}]},{"cell_type":"markdown","metadata":{"id":"MY28CE-BEDK1"},"source":["Dimensionality Reduction using Autoencoders"]},{"cell_type":"code","metadata":{"id":"TW-nb2BPFJ7M"},"source":["encoding_dim1 = 16\n","encoding_dim2 = 5\n","\n","input_rating = Input(shape=(64,))\n","encoded = Dense(16, activation='relu')(input_rating) # 64->16\n","encoded = Dense(5, activation='relu')(encoded) # 16->05\n","decoded = Dense(16, activation='relu')(encoded) # 05->16\n","decoded = Dense(64, activation='sigmoid')(decoded) # 16->64\n","\n","autoencoder = Model(input_rating, decoded)\n","encoder1 = Model(input_rating, autoencoder.layers[1](input_rating))\n","\n","input_encoding = Input(shape=(encoding_dim1,))\n","encoder2 = Model(input_encoding, autoencoder.layers[2](input_encoding))\n","encoded_input1 = Input(shape=(encoding_dim2,))\n","encoded_input2 = Input(shape=(encoding_dim1,))\n","\n","decoder_layer1 = autoencoder.layers[-2]\n","decoder_layer2 = autoencoder.layers[-1]\n","decoder1 = Model(encoded_input1, decoder_layer1(encoded_input1))\n","decoder2 = Model(encoded_input2, decoder_layer2(encoded_input2))"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"E_bNp_9pGBW9"},"source":["autoencoder.compile(optimizer='adam', loss='mse')"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"W4H2pXrFGFFA","colab":{"base_uri":"https://localhost:8080/","height":439},"executionInfo":{"status":"ok","timestamp":1630161541306,"user_tz":-330,"elapsed":17,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"21865b66-bae9-46ba-e8f4-657c1d40c125"},"source":["input_df = input_df/5\n","input_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["\n","\n","
\n"," \n"," \n"," \n"," 1 \n"," 2 \n"," 3 \n"," 4 \n"," 5 \n"," 6 \n"," 7 \n"," 8 \n"," 9 \n"," 10 \n"," 11 \n"," 12 \n"," 13 \n"," 14 \n"," 15 \n"," 16 \n"," 17 \n"," 18 \n"," 19 \n"," 20 \n"," 21 \n"," 22 \n"," 23 \n"," 24 \n"," 25 \n"," 26 \n"," 27 \n"," 28 \n"," 29 \n"," 30 \n"," 31 \n"," 32 \n"," 33 \n"," 34 \n"," 35 \n"," 36 \n"," 37 \n"," 38 \n"," 39 \n"," 40 \n"," 41 \n"," 42 \n"," 43 \n"," 44 \n"," 45 \n"," 46 \n"," 47 \n"," 48 \n"," 49 \n"," 50 \n"," 51 \n"," 52 \n"," 53 \n"," 54 \n"," 55 \n"," 56 \n"," 57 \n"," 58 \n"," 59 \n"," 60 \n"," 61 \n"," 62 \n"," 63 \n"," 64 \n"," \n"," \n"," \n"," \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," 1 \n"," \n"," \n"," 2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," 0.2 \n"," \n"," \n"," 5 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.4 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.6 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.2 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 1 \n"," 0.7 \n"," 0.7 \n"," 0.8 \n"," 0.7 \n"," 0.8 \n"," 0.7 \n"," 0.6 \n"," 0.7 \n"," 0.7 \n"," 0.6 \n"," 0.7 \n"," 0.8 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.6 \n"," 0.7 \n"," 0.7 \n"," 1 \n"," 0.7 \n"," 0.4 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," \n"," \n"," 6 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.7 \n"," 0.7 \n"," 0.9 \n"," 0.8 \n"," 0.7 \n"," 0.6 \n"," 0.8 \n"," 0.9 \n"," 0.6 \n"," 0.8 \n"," 0.8 \n"," 0.6 \n"," 0.9 \n"," 0.8 \n"," 0.8 \n"," 0.6 \n"," 0.7 \n"," 0.8 \n"," 0.8 \n"," 0.6 \n"," 0.7 \n"," 0.8 \n"," 0.9 \n"," 0.7 \n"," 0.9 \n"," 0.9 \n"," 0.7 \n"," 0.8 \n"," 0.9 \n"," 0.7 \n"," 0.8 \n"," 0.7 \n"," 0.9 \n"," 0.8 \n"," 0.6 \n"," 0.8 \n"," 0.7 \n"," 0.8 \n"," 0.7 \n"," 0.8 \n"," 0.7 \n"," 0.8 \n"," 0.7 \n"," 0.9 \n"," 1 \n"," 1 \n"," 1 \n"," 0.9 \n"," 0.8 \n"," 1 \n"," 0.6 \n"," 0.9 \n"," 0.2 \n"," 0.8 \n"," 0.9 \n"," 0.7 \n"," 0.8 \n"," 0.6 \n"," 0.9 \n"," 0.7 \n"," 0.6 \n"," \n"," \n"," 7 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," 0.8 \n"," \n"," \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," \n"," \n"," 6035 \n"," 0.8 \n"," 0.5 \n"," 0.2 \n"," 0.4 \n"," 0.2 \n"," 0.6 \n"," 0.6 \n"," 0.4 \n"," 0.3 \n"," 0.5 \n"," 0.8 \n"," 0.3 \n"," 0.5 \n"," 0.5 \n"," 0.3 \n"," 0.6 \n"," 0.6 \n"," 0.5 \n"," 0.3 \n"," 0.4 \n"," 0.4 \n"," 0.5 \n"," 0.3 \n"," 0.4 \n"," 0.2 \n"," 0.4 \n"," 0.4 \n"," 0.6 \n"," 0.6 \n"," 0.4 \n"," 0.4 \n"," 0.8 \n"," 0.4 \n"," 0.6 \n"," 0.3 \n"," 0.6 \n"," 0.5 \n"," 0.3 \n"," 0.5 \n"," 0.4 \n"," 0.5 \n"," 0.6 \n"," 0.5 \n"," 0.4 \n"," 0.5 \n"," 0.4 \n"," 0.6 \n"," 0.4 \n"," 0.7 \n"," 0.7 \n"," 0.5 \n"," 0.5 \n"," 0.6 \n"," 0.3 \n"," 0.5 \n"," 0.2 \n"," 0.5 \n"," 1 \n"," 0.4 \n"," 0.5 \n"," 0.3 \n"," 0.8 \n"," 0.4 \n"," 0.3 \n"," \n"," \n"," 6036 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.4 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.8 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.4 \n"," 0.8 \n"," 0.6 \n"," 0.6 \n"," 0.8 \n"," 0.6 \n"," 0.8 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 1 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.8 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.8 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.2 \n"," 0.6 \n"," 0.6 \n"," \n"," \n"," 6037 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.8 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.6 \n"," 0.7 \n"," 0.6 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.8 \n"," 0.7 \n"," 0.7 \n"," 0.8 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," 0.7 \n"," \n"," \n"," 6039 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," \n"," \n"," 6040 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.6 \n"," 0.7 \n"," 0.7 \n"," 0.6 \n"," 0.5 \n"," 0.7 \n"," 0.7 \n"," 0.4 \n"," 0.7 \n"," 0.7 \n"," 0.5 \n"," 0.7 \n"," 0.6 \n"," 0.7 \n"," 0.5 \n"," 0.5 \n"," 0.7 \n"," 0.7 \n"," 0.5 \n"," 0.6 \n"," 0.6 \n"," 0.8 \n"," 0.6 \n"," 0.8 \n"," 0.8 \n"," 0.6 \n"," 0.6 \n"," 0.8 \n"," 0.6 \n"," 0.8 \n"," 0.5 \n"," 0.8 \n"," 0.7 \n"," 0.4 \n"," 0.6 \n"," 0.5 \n"," 0.7 \n"," 0.6 \n"," 0.7 \n"," 0.5 \n"," 0.6 \n"," 0.6 \n"," 0.8 \n"," 0.6 \n"," 0.9 \n"," 0.8 \n"," 0.7 \n"," 0.7 \n"," 0.8 \n"," 0.5 \n"," 0.7 \n"," 0.2 \n"," 0.7 \n"," 1 \n"," 0.5 \n"," 0.6 \n"," 0.4 \n"," 0.7 \n"," 0.5 \n"," 0.5 \n"," \n"," \n","
\n","
4811 rows × 64 columns
\n","
"],"text/plain":[" 1 2 3 4 5 6 7 ... 58 59 60 61 62 63 64\n","1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1\n","2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 ... 0.2 0.2 0.2 0.2 0.2 0.2 0.2\n","5 0.7 0.7 0.7 0.7 0.7 0.4 0.7 ... 0.7 0.7 0.7 0.7 0.7 0.7 0.7\n","6 0.8 0.8 0.8 0.7 0.7 0.9 0.8 ... 0.9 0.7 0.8 0.6 0.9 0.7 0.6\n","7 0.8 0.8 0.8 0.8 0.8 0.8 0.8 ... 0.8 0.8 0.8 0.8 0.8 0.8 0.8\n","... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...\n","6035 0.8 0.5 0.2 0.4 0.2 0.6 0.6 ... 1 0.4 0.5 0.3 0.8 0.4 0.3\n","6036 0.6 0.6 0.6 0.4 0.6 0.6 0.6 ... 0.6 0.6 0.6 0.6 0.2 0.6 0.6\n","6037 0.7 0.7 0.7 0.7 0.7 0.7 0.7 ... 0.7 0.7 0.7 0.7 0.7 0.7 0.7\n","6039 0.6 0.6 0.6 0.6 0.6 0.6 0.6 ... 0.6 0.6 0.6 0.6 0.6 0.6 0.6\n","6040 0.6 0.6 0.6 0.6 0.6 0.7 0.7 ... 1 0.5 0.6 0.4 0.7 0.5 0.5\n","\n","[4811 rows x 64 columns]"]},"metadata":{},"execution_count":26}]},{"cell_type":"code","metadata":{"id":"8jhND0V3GGuB","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1630161541308,"user_tz":-330,"elapsed":14,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"006d8cc8-ceab-478e-885d-c8094448f23e"},"source":["x_train = input_df.sample(frac=0.8, random_state=200).astype(float)\n","x_test = input_df.drop(x_train.index).astype(float)\n","x_train.shape"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(3849, 64)"]},"metadata":{},"execution_count":27}]},{"cell_type":"code","metadata":{"id":"eDbRBgp8GINs","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1630161563771,"user_tz":-330,"elapsed":21802,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"680d580c-8ce4-4e47-9090-de997beccd31"},"source":["#collapse-hide\n","autoencoder.fit(x_train, x_train, epochs=100, batch_size=100, shuffle=True, validation_data=(x_test,x_test))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Epoch 1/100\n","39/39 [==============================] - 1s 11ms/step - loss: 0.0820 - val_loss: 0.0784\n","Epoch 2/100\n","39/39 [==============================] - 0s 2ms/step - loss: 0.0762 - val_loss: 0.0718\n","Epoch 3/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0681 - val_loss: 0.0555\n","Epoch 4/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0358 - val_loss: 0.0240\n","Epoch 5/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0219 - val_loss: 0.0203\n","Epoch 6/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0198 - val_loss: 0.0187\n","Epoch 7/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0182 - val_loss: 0.0170\n","Epoch 8/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0166 - val_loss: 0.0155\n","Epoch 9/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0152 - val_loss: 0.0141\n","Epoch 10/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0138 - val_loss: 0.0130\n","Epoch 11/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0127 - val_loss: 0.0120\n","Epoch 12/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0117 - val_loss: 0.0109\n","Epoch 13/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0105 - val_loss: 0.0096\n","Epoch 14/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0088 - val_loss: 0.0079\n","Epoch 15/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0075 - val_loss: 0.0072\n","Epoch 16/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0070 - val_loss: 0.0068\n","Epoch 17/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0067 - val_loss: 0.0067\n","Epoch 18/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0065 - val_loss: 0.0066\n","Epoch 19/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0063 - val_loss: 0.0063\n","Epoch 20/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0060 - val_loss: 0.0060\n","Epoch 21/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0058 - val_loss: 0.0057\n","Epoch 22/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0054 - val_loss: 0.0053\n","Epoch 23/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0050 - val_loss: 0.0049\n","Epoch 24/100\n","39/39 [==============================] - 0s 2ms/step - loss: 0.0046 - val_loss: 0.0045\n","Epoch 25/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0042 - val_loss: 0.0042\n","Epoch 26/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0040 - val_loss: 0.0041\n","Epoch 27/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0039 - val_loss: 0.0039\n","Epoch 28/100\n","39/39 [==============================] - 0s 2ms/step - loss: 0.0038 - val_loss: 0.0039\n","Epoch 29/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0038 - val_loss: 0.0038\n","Epoch 30/100\n","39/39 [==============================] - 0s 2ms/step - loss: 0.0037 - val_loss: 0.0038\n","Epoch 31/100\n","39/39 [==============================] - 0s 2ms/step - loss: 0.0037 - val_loss: 0.0038\n","Epoch 32/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0037 - val_loss: 0.0038\n","Epoch 33/100\n","39/39 [==============================] - 0s 2ms/step - loss: 0.0037 - val_loss: 0.0038\n","Epoch 34/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0037 - val_loss: 0.0038\n","Epoch 35/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0037 - val_loss: 0.0038\n","Epoch 36/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0037 - val_loss: 0.0037\n","Epoch 37/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0037 - val_loss: 0.0037\n","Epoch 38/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0037 - val_loss: 0.0037\n","Epoch 39/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0037 - val_loss: 0.0037\n","Epoch 40/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0036 - val_loss: 0.0037\n","Epoch 41/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0036 - val_loss: 0.0037\n","Epoch 42/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0036 - val_loss: 0.0037\n","Epoch 43/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0036 - val_loss: 0.0038\n","Epoch 44/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0036 - val_loss: 0.0037\n","Epoch 45/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0036 - val_loss: 0.0037\n","Epoch 46/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0036 - val_loss: 0.0037\n","Epoch 47/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0036 - val_loss: 0.0037\n","Epoch 48/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0036 - val_loss: 0.0037\n","Epoch 49/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0036 - val_loss: 0.0037\n","Epoch 50/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0036 - val_loss: 0.0036\n","Epoch 51/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0035 - val_loss: 0.0036\n","Epoch 52/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0035 - val_loss: 0.0036\n","Epoch 53/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0035 - val_loss: 0.0036\n","Epoch 54/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0035 - val_loss: 0.0036\n","Epoch 55/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0035 - val_loss: 0.0036\n","Epoch 56/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0035 - val_loss: 0.0036\n","Epoch 57/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0035 - val_loss: 0.0036\n","Epoch 58/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0035 - val_loss: 0.0036\n","Epoch 59/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0035 - val_loss: 0.0036\n","Epoch 60/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0035 - val_loss: 0.0036\n","Epoch 61/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0035 - val_loss: 0.0036\n","Epoch 62/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0035 - val_loss: 0.0036\n","Epoch 63/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0035 - val_loss: 0.0036\n","Epoch 64/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0034 - val_loss: 0.0036\n","Epoch 65/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0034 - val_loss: 0.0036\n","Epoch 66/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0034 - val_loss: 0.0036\n","Epoch 67/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0034 - val_loss: 0.0036\n","Epoch 68/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0034 - val_loss: 0.0035\n","Epoch 69/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0034 - val_loss: 0.0035\n","Epoch 70/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0034 - val_loss: 0.0035\n","Epoch 71/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0034 - val_loss: 0.0035\n","Epoch 72/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0034 - val_loss: 0.0034\n","Epoch 73/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0033 - val_loss: 0.0034\n","Epoch 74/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0033 - val_loss: 0.0034\n","Epoch 75/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0033 - val_loss: 0.0035\n","Epoch 76/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0033 - val_loss: 0.0034\n","Epoch 77/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0033 - val_loss: 0.0035\n","Epoch 78/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0033 - val_loss: 0.0034\n","Epoch 79/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0033 - val_loss: 0.0034\n","Epoch 80/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0033 - val_loss: 0.0034\n","Epoch 81/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0033 - val_loss: 0.0034\n","Epoch 82/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0032 - val_loss: 0.0034\n","Epoch 83/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0032 - val_loss: 0.0033\n","Epoch 84/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0032 - val_loss: 0.0033\n","Epoch 85/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0032 - val_loss: 0.0033\n","Epoch 86/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0032 - val_loss: 0.0033\n","Epoch 87/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0032 - val_loss: 0.0033\n","Epoch 88/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0032 - val_loss: 0.0033\n","Epoch 89/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0032 - val_loss: 0.0033\n","Epoch 90/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0032 - val_loss: 0.0033\n","Epoch 91/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0031 - val_loss: 0.0032\n","Epoch 92/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0031 - val_loss: 0.0032\n","Epoch 93/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0031 - val_loss: 0.0033\n","Epoch 94/100\n","39/39 [==============================] - 0s 2ms/step - loss: 0.0031 - val_loss: 0.0032\n","Epoch 95/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0031 - val_loss: 0.0032\n","Epoch 96/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0031 - val_loss: 0.0032\n","Epoch 97/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0031 - val_loss: 0.0032\n","Epoch 98/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0031 - val_loss: 0.0032\n","Epoch 99/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0030 - val_loss: 0.0032\n","Epoch 100/100\n","39/39 [==============================] - 0s 3ms/step - loss: 0.0030 - val_loss: 0.0031\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{},"execution_count":28}]},{"cell_type":"code","metadata":{"id":"uznUG75dGKpo","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1630161564735,"user_tz":-330,"elapsed":973,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"f1c32560-609a-405b-bdc5-433ebfa94a95"},"source":["encoded_output1 = encoder1.predict(input_df.astype(float))\n","encoded_output2 = encoder2.predict(encoded_output1)\n","decoded_output1 = decoder1.predict(encoded_output2)\n","decoded_output2 = decoder2.predict(decoded_output1)\n","encoded_output2"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[0.0000000e+00, 2.8876242e-01, 0.0000000e+00, 7.2445278e+00,\n"," 2.0862639e-01],\n"," [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 6.0118270e-01,\n"," 1.3619714e+00],\n"," [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 4.6480484e+00,\n"," 7.1844959e-01],\n"," ...,\n"," [0.0000000e+00, 2.2405386e-04, 0.0000000e+00, 4.7641506e+00,\n"," 6.6250229e-01],\n"," [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 3.9228556e+00,\n"," 7.8529972e-01],\n"," [0.0000000e+00, 7.5990593e-01, 0.0000000e+00, 4.4415331e+00,\n"," 1.1810944e+00]], dtype=float32)"]},"metadata":{},"execution_count":29}]},{"cell_type":"code","metadata":{"id":"ZaBZlZdOGMh-","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1630161564736,"user_tz":-330,"elapsed":15,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"b46e88fd-4dc0-46b7-b2bf-7d68b77c70f6"},"source":["decoded_output2"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[0.95494324, 0.9596404 , 0.9512359 , ..., 0.958049 , 0.96002877,\n"," 0.95988166],\n"," [0.30084205, 0.21765906, 0.22469196, ..., 0.2167964 , 0.21715164,\n"," 0.2075283 ],\n"," [0.6712847 , 0.6752827 , 0.67567694, ..., 0.6842654 , 0.67781204,\n"," 0.6790005 ],\n"," ...,\n"," [0.6975429 , 0.69447374, 0.6965812 , ..., 0.70305765, 0.6982425 ,\n"," 0.6999866 ],\n"," [0.57714945, 0.59992576, 0.5955594 , ..., 0.6067458 , 0.6005735 ,\n"," 0.5995167 ],\n"," [0.8209668 , 0.65458286, 0.6323916 , ..., 0.73644984, 0.54032886,\n"," 0.48810017]], dtype=float32)"]},"metadata":{},"execution_count":30}]},{"cell_type":"code","metadata":{"id":"1nUwDmGpGOMb","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1630161567286,"user_tz":-330,"elapsed":2558,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"423d28c7-e7c4-4487-c8fe-a40db6018157"},"source":["ans = decoded_output2 * 5\n","for (x,y), value in np.ndenumerate(ans):\n"," ans[x][y] = round_off_rating(ans[x][y])\n","ans"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[5. , 5. , 5. , ..., 5. , 5. , 5. ],\n"," [1.5, 1. , 1. , ..., 1. , 1. , 1. ],\n"," [3.5, 3.5, 3.5, ..., 3.5, 3.5, 3.5],\n"," ...,\n"," [3.5, 3.5, 3.5, ..., 3.5, 3.5, 3.5],\n"," [3. , 3. , 3. , ..., 3. , 3. , 3. ],\n"," [4. , 3.5, 3. , ..., 3.5, 2.5, 2.5]], dtype=float32)"]},"metadata":{},"execution_count":31}]},{"cell_type":"code","metadata":{"id":"N7W-vwpHGPnQ","colab":{"base_uri":"https://localhost:8080/","height":439},"executionInfo":{"status":"ok","timestamp":1630161567289,"user_tz":-330,"elapsed":37,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"c3da9253-cbee-41fd-ff4a-e19949fc3a1e"},"source":["ans_df = pd.DataFrame(ans)\n","df = input_df.copy()\n","df = df * 5\n","ans_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["\n","\n","
\n"," \n"," \n"," \n"," 0 \n"," 1 \n"," 2 \n"," 3 \n"," 4 \n"," 5 \n"," 6 \n"," 7 \n"," 8 \n"," 9 \n"," 10 \n"," 11 \n"," 12 \n"," 13 \n"," 14 \n"," 15 \n"," 16 \n"," 17 \n"," 18 \n"," 19 \n"," 20 \n"," 21 \n"," 22 \n"," 23 \n"," 24 \n"," 25 \n"," 26 \n"," 27 \n"," 28 \n"," 29 \n"," 30 \n"," 31 \n"," 32 \n"," 33 \n"," 34 \n"," 35 \n"," 36 \n"," 37 \n"," 38 \n"," 39 \n"," 40 \n"," 41 \n"," 42 \n"," 43 \n"," 44 \n"," 45 \n"," 46 \n"," 47 \n"," 48 \n"," 49 \n"," 50 \n"," 51 \n"," 52 \n"," 53 \n"," 54 \n"," 55 \n"," 56 \n"," 57 \n"," 58 \n"," 59 \n"," 60 \n"," 61 \n"," 62 \n"," 63 \n"," \n"," \n"," \n"," \n"," 0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 4.5 \n"," 4.5 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 4.5 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 4.5 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 4.5 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," 5.0 \n"," \n"," \n"," 1 \n"," 1.5 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.5 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," 1.0 \n"," \n"," \n"," 2 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," \n"," \n"," 3 \n"," 4.5 \n"," 4.0 \n"," 4.0 \n"," 3.5 \n"," 3.5 \n"," 4.5 \n"," 4.0 \n"," 3.5 \n"," 3.0 \n"," 4.0 \n"," 4.5 \n"," 3.0 \n"," 4.0 \n"," 4.0 \n"," 3.0 \n"," 4.5 \n"," 4.5 \n"," 4.0 \n"," 3.0 \n"," 3.5 \n"," 4.0 \n"," 4.0 \n"," 3.5 \n"," 3.5 \n"," 4.0 \n"," 4.5 \n"," 3.5 \n"," 4.5 \n"," 4.5 \n"," 3.5 \n"," 4.0 \n"," 4.5 \n"," 3.5 \n"," 4.5 \n"," 3.5 \n"," 4.5 \n"," 4.0 \n"," 3.0 \n"," 4.0 \n"," 3.5 \n"," 4.0 \n"," 3.5 \n"," 4.0 \n"," 3.5 \n"," 4.0 \n"," 3.5 \n"," 4.5 \n"," 3.5 \n"," 5.0 \n"," 4.5 \n"," 4.5 \n"," 4.0 \n"," 4.5 \n"," 3.0 \n"," 4.5 \n"," 1.0 \n"," 4.0 \n"," 4.5 \n"," 3.5 \n"," 4.0 \n"," 3.0 \n"," 4.5 \n"," 3.5 \n"," 3.0 \n"," \n"," \n"," 4 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," 4.0 \n"," \n"," \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," ... \n"," \n"," \n"," 4806 \n"," 3.5 \n"," 2.5 \n"," 2.5 \n"," 2.0 \n"," 2.0 \n"," 3.0 \n"," 2.5 \n"," 2.0 \n"," 1.5 \n"," 2.5 \n"," 2.5 \n"," 1.5 \n"," 2.5 \n"," 2.5 \n"," 1.5 \n"," 3.0 \n"," 3.0 \n"," 2.5 \n"," 1.5 \n"," 2.0 \n"," 2.5 \n"," 2.5 \n"," 2.0 \n"," 2.0 \n"," 2.5 \n"," 3.0 \n"," 2.0 \n"," 3.0 \n"," 3.0 \n"," 2.0 \n"," 2.0 \n"," 3.0 \n"," 2.0 \n"," 3.0 \n"," 2.0 \n"," 3.0 \n"," 2.5 \n"," 1.5 \n"," 3.0 \n"," 2.0 \n"," 2.5 \n"," 2.0 \n"," 2.5 \n"," 2.0 \n"," 2.5 \n"," 2.0 \n"," 3.0 \n"," 2.0 \n"," 4.0 \n"," 3.5 \n"," 2.5 \n"," 2.5 \n"," 3.5 \n"," 1.5 \n"," 2.5 \n"," 1.0 \n"," 2.5 \n"," 3.0 \n"," 2.0 \n"," 2.5 \n"," 1.5 \n"," 2.5 \n"," 2.0 \n"," 1.5 \n"," \n"," \n"," 4807 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.5 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," \n"," \n"," 4808 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," 3.5 \n"," \n"," \n"," 4809 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," \n"," \n"," 4810 \n"," 4.0 \n"," 3.5 \n"," 3.0 \n"," 3.0 \n"," 3.0 \n"," 3.5 \n"," 3.5 \n"," 3.0 \n"," 2.5 \n"," 3.5 \n"," 3.5 \n"," 2.0 \n"," 3.5 \n"," 3.5 \n"," 2.5 \n"," 3.5 \n"," 4.0 \n"," 3.5 \n"," 2.5 \n"," 2.5 \n"," 3.5 \n"," 3.5 \n"," 2.5 \n"," 3.0 \n"," 3.5 \n"," 4.0 \n"," 3.0 \n"," 4.0 \n"," 4.0 \n"," 3.0 \n"," 3.0 \n"," 4.0 \n"," 3.0 \n"," 4.0 \n"," 2.5 \n"," 4.0 \n"," 3.5 \n"," 2.5 \n"," 3.5 \n"," 3.0 \n"," 3.5 \n"," 3.0 \n"," 3.5 \n"," 3.0 \n"," 3.5 \n"," 3.0 \n"," 4.0 \n"," 3.0 \n"," 4.5 \n"," 4.5 \n"," 3.5 \n"," 3.5 \n"," 4.0 \n"," 2.5 \n"," 3.5 \n"," 1.0 \n"," 3.5 \n"," 4.0 \n"," 3.0 \n"," 3.0 \n"," 2.5 \n"," 3.5 \n"," 2.5 \n"," 2.5 \n"," \n"," \n","
\n","
4811 rows × 64 columns
\n","
"],"text/plain":[" 0 1 2 3 4 5 6 ... 57 58 59 60 61 62 63\n","0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 ... 5.0 5.0 5.0 5.0 5.0 5.0 5.0\n","1 1.5 1.0 1.0 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0 1.0 1.0 1.0\n","2 3.5 3.5 3.5 3.5 3.5 3.5 3.5 ... 3.5 3.5 3.5 3.5 3.5 3.5 3.5\n","3 4.5 4.0 4.0 3.5 3.5 4.5 4.0 ... 4.5 3.5 4.0 3.0 4.5 3.5 3.0\n","4 4.0 4.0 4.0 4.0 4.0 4.0 4.0 ... 4.0 4.0 4.0 4.0 4.0 4.0 4.0\n","... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...\n","4806 3.5 2.5 2.5 2.0 2.0 3.0 2.5 ... 3.0 2.0 2.5 1.5 2.5 2.0 1.5\n","4807 3.0 3.0 3.0 3.0 3.0 3.0 3.0 ... 3.0 3.0 3.0 3.0 3.0 3.0 3.0\n","4808 3.5 3.5 3.5 3.5 3.5 3.5 3.5 ... 3.5 3.5 3.5 3.5 3.5 3.5 3.5\n","4809 3.0 3.0 3.0 3.0 3.0 3.0 3.0 ... 3.0 3.0 3.0 3.0 3.0 3.0 3.0\n","4810 4.0 3.5 3.0 3.0 3.0 3.5 3.5 ... 4.0 3.0 3.0 2.5 3.5 2.5 2.5\n","\n","[4811 rows x 64 columns]"]},"metadata":{},"execution_count":32}]},{"cell_type":"code","metadata":{"id":"CYngQcO9GR5I","colab":{"base_uri":"https://localhost:8080/","height":326},"executionInfo":{"status":"ok","timestamp":1630161567291,"user_tz":-330,"elapsed":34,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"9e483d95-74b8-4b63-f715-4920dcc5efb3"},"source":["plt.figure(figsize=(10,10))\n","plt.subplot(211)\n","line1, = plt.plot(range(1,65), df.iloc[6], 'b')\n","line2, = plt.plot(range(1,65), ans_df.iloc[3], 'k')\n","plt.ylabel('ratings')\n","plt.xlabel('movie ids')\n","plt.legend([line1, line2], ['Initial Filtered', 'Predicted AE'])"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{},"execution_count":33},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":[""]},"metadata":{"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"C_L2Z7-PGT6-","colab":{"base_uri":"https://localhost:8080/","height":594},"executionInfo":{"status":"ok","timestamp":1630161568740,"user_tz":-330,"elapsed":1470,"user":{"displayName":"Sparsh Agarwal","photoUrl":"","userId":"13037694610922482904"}},"outputId":"44784d2a-ed59-432e-b45a-266781733c30"},"source":["plt.figure(figsize=(50,50))\n","plt.subplot(212)\n","line1, = plt.plot(range(1,4812), df[1].tolist(), 'bo')\n","line2, = plt.plot(range(1,4812), ans_df[0].tolist(), 'ko')\n","plt.ylabel('ratings')\n","plt.xlabel('movie ids')\n","plt.legend([line1, line2], ['Initial Filtered', 'Predicted AE'])"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{},"execution_count":34},{"output_type":"display_data","data":{"image/png":"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AACAhE3GAAAAAAAAAAAAAEDCJmMAAAAAAAAAAAAAIGGTMQAAAAAAAAAAAACQsMkYAAAAAAAAAAAAAEjYZAwAAAAAAAAAAAAAJGwyBgAAAAAAAAAAAOCLwmQyiUuXLsVLX/rS+O7v/u548skn177WD/zAD8T73ve+iIi466674pFHHun87Yc//OF48MEHR9/j4sWL8ZnPfCb73UMPPRRFUcTv/d7vJZ9Xz1gdb3vb20bfdwibjAEAAAAAAAAAAAA4dffee29cvHgxtra24uLFi3HvvfdufM3nPe958dBDD8UnPvGJ2N7ejne+853J988888xa1/21X/u1ODg46Px+3U3Gfe67776444474r777ks+r56xOt70pjcd630rNhkDAAAAAAAAAAAAcKruvffeuPvuu+Oxxx6Lsizjsccei7vvvvtYNhpXXvGKV8Tf/M3fxIc//OF4xSteEa973evi4OAgvvCFL8RP/dRPxcte9rK4+eab413veldERJRlGT/2Yz8WL3rRi+JbvuVb4p/+6Z+OrvWqV70qLl++HBERv/d7vxe33HJLfN3XfV1Mp9N49NFH453vfGf88i//cly6dCk+8pGPxOOPPx5veMMb4mUve1m87GUviz/5kz+JiIgnnngiXvOa18RLXvKSuOuuu6Isy2zay7KM3/zN34x3v/vd8Qd/8Afx9NNPH1u+DHXm1O8IAAAAAAAAAAAAwHPam9/85njyySeTz5588sl485vfHHfeeefG13/mmWfiQx/6UHzbt31bRER87GMfi0984hNx0003xT333BNf+qVfGn/+538e//mf/xnf9E3fFK95zWvi4x//ePzlX/5lPPLII/GP//iPcXBwED/4gz+YXPfxxx+PH/7hH44HHnggbrrppvjnf/7neMELXhA/+qM/GufPn4+f/MmfjIiI7/u+74uf+ImfiDvuuCM+9alPxWtf+9r45Cc/GT//8z8fd9xxR7zlLW+J3/md34lf//Vfz6b/wQcfjJtuuim+6qu+Kl71qlfF7/zO78Qb3vCGiIh46qmn4tKlS0e//emf/un4nu/5no3zrMkmYwAAAAAAAAAAAABO1ac+9alRnw9V34D7ile8In7oh34oHnzwwbj99tvjpptuioiI3//934+HH3443ve+90VExL/927/FX//1X8cDDzwQ3/u93xuTySQuXLgQr371q1vX/9M//dN45StfeXStF7zgBdl0/OEf/mE88sgjR3/+93//9/jc5z4XDzzwQHzgAx+IiIhv//Zvjy/7si/Lnn/ffffFG9/4xoiIeOMb3xi/8Ru/cbTJ+HnPe1489NBDo/NmLJuMAQAAAAAAAAAAADhVN954Yzz22GPZzzfRtQF3d3f36N/Lsoy3v/3t8drXvjb5ze/+7u9udO+6Z599Nv70T/80rrvuutHnfuELX4j3v//98cEPfjDe+ta3RlmW8cQTT8RnP/vZuP76648tjatsndqdAAAAAAAAAAAAACAi3vrWt8bOzk7y2c7OTrz1rW898Xu/9rWvjV/91V+Nz3/+8xER8Vd/9VfxH//xH/HKV74y3vve98YXvvCF+Id/+If44z/+49a5L3/5y+OBBx6Iv/3bv42IiH/+53+OiIjrr78+PvvZzx797jWveU28/e1vP/pztfH5la98ZbznPe+JiIgPfehD8S//8i+te/zRH/1R3HzzzfF3f/d38eijj8Zjjz0Wb3jDG+L+++8/phwYxiZjAAAAAAAAAAAAAE7VnXfeGffcc0/s7+9HURSxv78f99xzT9x5550nfu+77rorDg4O4pZbbomXvvSl8SM/8iPxzDPPxOtf//r46q/+6jg4OIjv//7vj2/4hm9onfvCF74w7rnnnvjO7/zO+Lqv+7r4nu/5noiI+I7v+I64//7749KlS/GRj3wkfuVXfiUuX74cN998cxwcHMQ73/nOiIj4uZ/7uXjggQfiJS95SXzgAx/I/s3N9913X7z+9a9PPnvDG94Q9913X0REPPXUU3Hp0qWj401vetNxZ1FERBRlWZ7IhU/KbbfdVl6+fPlKJwMAAAAAAAAAAACAmk9+8pPx4he/+Eongw658imK4qNlWd6W+72/yRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAA4FiUZXmlk0DGOuVikzEAAAAAAAAAAAAAG7vuuuviiSeesNH4KlOWZTzxxBNx3XXXjTrvzAmlBwAAAAAAAAAAAIDnkBtuuCE+/elPx+OPP36lk0LDddddFzfccMOoc2wyBgAAAAAAAAAAAGBjZ8+ejZtuuulKJ4NjsnWlEwAAAAAAAAAAAAAAXF1sMgYAAAAAAAAAAAAAEjYZAwAAAAAAAAAAAAAJm4wBAAAAAAAAAAAAgIRNxgAAAAAAAAAAAABAwiZjAAAAAAAAAAAAACBhkzEAAAAAAAAAAAAAkLDJGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACRsMgYAAAAAAAAAAAAAEjYZAwAAAAAAAAAAAAAJm4wBAAAAAAAAAAAAgIRNxgAAAAAAAAAAAABA4kQ3GRdF8WhRFP+9KIqHiqK4nPm+KIriV4qi+JuiKB4uiuKWk0wPAAAAAAAAAAAAADBAWZYndkTEoxHx5T3f/y8R8aGIKCLi5RHxZ6uueeutt5Y8t8xm83Iy2S8jinJra7/c3p6XEWUZUZaTybyMWHwXsXd4FOVksl9Op/Nyb688+m1EWW5tLf65t1eWu7vtz3d352VRtK+3uMfs6F5bW/vlbDavpS3KiEkZEeVksl8eHMwOz43asVdOJs3P9w7vWZb7+2U5ny+eeT4va2mvnnF5j+U/98uI+dG56XnLZ53NysN82z96ngsXZkm+7u7OD++1NzjNe3uLo0r/dDovt7aW99jdnZfz+aIM659HzMuimB3+ubru+XI6nTfKviwnk2U+VGVT5XGV/uqaVXqWedauM7n8rOrL/n56bsRuGbF1+NuijDh/dM30/ntlUewlaanyfjpt5ulu7c+L+29t7R/mc7PupWW9vT0/yu+0ri7vWc+nxTV2k3tX6ZxMFnW42cba9T6Xd/XvcvUzvcZ02mwr9XKv58mybbXLv12nF3V2mZ5Ff1Bm0pvmdXX9ukU5tfNzb6+rXfZ/1zyqPqYo+r9v5vG5c/NMHdorDw4W9bXedzTb2e7u4txFfVjmQVHk+sfmPbbKtCzbfVxX+yuKdn9T5efi+dP2WfWlzT6zKPbK2WzRhyzaZlUfmv3+bibdy2et+qvd3WX+1Ot/sw00v+saj6rnarbFyWSW3KfqW4qiPGzny3784GDWU3+62lbaptM/75X1MSGnnZ9pX56Oj/k2NJ3Ok/ZXfZark135WqWjWTZ9/WnzmvXvt7YW/ULu+vX8aNa1otir9f/1Ntquk/W+qrp3lYf7+4v75+7ZLN/d3Xob6R7bF/1Cms/5sXrZXurPvxwP0/4jHS/TepBru/W+Lld29fpfjfur6lxffuXu04w3utKTiwPq6ZrPy1bdrfqZxeftvGr297m+trr2Ml/KRvnV69GkjJglz9RsA7kYoB6HVuPDbNaMF9P0L+OfXH1u1oVlvjT7rr5xpirHvnssz8/HdbnYY2+vLA8O+uKOdnzeVWfbY/wsiSmrttMVR6d1J19HqrbdVx5pWusx5qQsitnRufVYodkPtMeBKg1pnNzsp9sx3TL2GNL+0jnX/mEc3yyHfF+T1p38GF31Cbn22e5L8vO/tD7k4s29o3ZTr9vT6bJeTibpWNKVJ7k6XZ3bNf4M6Rfr/Ux+nrH891y80myj9blDX2zQpT1HSOveZDLvHGvGlG2zjdbj3Hr/WI2D9blnMyYY8pztuHOvvHBh1pqvbm+3620aB6f9dH3uW59nR0xrv4vMdfLlmdb57vGpvq6R7zua7WF5fj1+atbd3DyiHv/m5w7tWLj7uXJxb9quh87d6msbzX69K+5d9BfpekR9ftwel9v9X1cMnEvjuXO5eKFrraB/nlQfX6fTdNw4f74ZM6dxfBobdI8bRVGtUeTqXi5N1VHlaXvcbvb7fW21a62typNme41ox7EHB/Vnasfc7factpPpdF4rx3Y7qOd717pbO15bxgvrxMD1fq8rXmtqxr/1Pq65plTFBovnyJdxUSz6zGbdWDWvr6envRbRjq1zfUZuzMy1t1xcUl8XbMb26ViSnlulP1/vutekc2smfXFHbs7YXl/J98fNcbIZT1b1s72uku/H2/F1ri9Y/qZqm31z8PyaY3sOUOVRro+ux7L19f1cDJ1fv8zXt2W7audv13UWc/p0LDt3rn7v5jrVtBZTNI/lszXnMV19Q7Pc03XvZt6da+RzPS6ZlM9//jSJW5br091rFem6Sb4PTdPUPurzrK5+bDZLy3Uy6VvXS3977lw63+6KpeprE30xSX2u2fX+oyzLw3dC9XybJXPg9pyqHUPX5yvN9brmOk577ti91tdef6iXbf96Y7V2lltvSef87XXArnG7me52fJ+f+6TrXV3tqrsNL+p42r+cOzdP8m7IPG71umEa0y5jre41/tyaXH4tPK2XzT6h/p6pir+61nyabbOqU33rcOnY2+4jcutMi5hjOUadP7+8dn7tpz2GDZ3Xtt+t5uPt6l7L/ru+ZtuOv3Pzt/m8e5zOrxf2tYe0jLreP9fjtum0f811SL3OvRdr19XmXKS9Fldvx81n7HqfV8WkffU7147r/caq9YbFGNHum5qxV32PQDP9q9b9V61vd7/3aT9Ts82n7wOaeT4mb5p9/nambNNxv7kG03W95dwx13+162BXm2i+s+4aa/vKtP2OoFwxDjfrXnNuez5bz1e1sVXrafU1jHq9L4oqrmvX6a51+Xa76ovl0n6kK+1dcdNkUpYXLqT3q/Z1NNfC2usJW0f1ql1fmmXRjEnSfqGaQzXrwcFBe20vMmsFzfXDrnWX7e20j6qvATXjsL53aFWd6dpDsCoubsa5zfipfm4zXVXdb7436Oq38nsl+t7H5Od37XGs/T63L17NPVc7Juqq72kMmYth6+8F+8qpKyaot5++fqxr7029T+vq75qf19dbu98hzmvvJtOyX7S9NA6vz6+GrMfy3BIRl8uyY59v1xfHccTqTcbviojvrf35LyPif+i7pk3Gzy2LgX2n0Xnv1Aa15ne53+UH7fax6nrN42yZD8THHttH6dzZWQxgZ8+OSdPiOc+ezW/IHH6ds2Xz5eeQNPffY6dcDPDNz7c6rnumFpCOTX9fvRhSZ7rSus5Rv9/ZY7je0Gccm/6dw8XPIe0od8+hbWBsW9k5XFwa217rbb6/rNsbG7qvtb3dbJf1ALP7u/FHVx7n2mXaBre2xpZPM682raer8n5VPerqe7YbQe/YfrqvbezUXoTmv1s9Hg2p29Wzz7LfX7gwy9SfdZ4zrRs7O/lFrZ2d4xgTc8+djrn5OrlzNHFbpmP4WF4Uq9r9coNX8zl3dqq2nqvrzTFtaJvojzPaY/rYMS1Xb/vbS5W/i3sOfd7V/er29nJS3192O+VkMk8WWofWuXqdXXVe9dv87/LpKop5Tx2arcyr7e3u8aIo5q2XzKvLeTaiPqyqf31l3fVs9edb3ba62vTqeGdxj+XCxtB231X/h/W5VZ3Nl1n7nOl03jmWTyZV/zO0Pa07rs4y9x+S/kkmX1b305FpU/n2t24dXeRNvt111eNV48Ym42NXebWP5kbjXF+T1unlceZMd96u6t+WY9XQZ9xJFi5XteNcbDBuHj6mj6nndXfZ9sfh633X95yL5xrSPteZ6286n1yWZ1rnx4zlQ9ttev50Oqbdj1k36HqucWPC6rlb+5zpdN4TS+Tj8ogzA+bHuXJP29liLtsdUy2fe1Vd7I/7uuvAOuseQ+v8ZET5949FXW21v//puuYmz9T3rEPm06tj6Xw5jY2Bx/fz8/mYtYJN17H66kZznjJsPrFqzBwe67XbTHdsP7QujF/n6qoL02nfmtJm8/Luax7nWuWy3JplNDau6Vs7iTgz4Nn62srYfmKd/J2X3Wvefcfy2ap5THcs2tcXdOXd8Zb1sPcyq+PuyaS9Wbtq2+l7gf54sv3bIfV96LuNIfVoUf8X/wFG7rzZgGsPz7fNjk3XG/PPv5jzjx1vxseEy3n7kOfI3bv7nVQzTf3zuHX60VVr/GP6rlXPOeQ3Q8aLfH709+1D5nKbxU9987001hhSTs17jSnbVeXTXC8cO78d+m5n+NHMu3xZjp3vDS33sc84tO52jw/dc4udw7WqoTFE+7fVun/uHUQ9th/2XmDV2lguH9bNm7HHqrQNbVuL4+zZcmWbyM/Jl3OErjJt/yVUxzX+DW934+PfofV+zDx4vecZ9v4sn/eLGGjT/B2X7vy6S+633bFL/zNHmZ8HdteD/Du0YUdXXLz4DzD7j7Rdje/X+ufWm6yrbBZ/tJ9r3bbVH8N3p6GvbvS3iSF7byaTvnXxddvUqj57TJ/e3ifBc0tcwU3GfxsRH4uIj0bE3Znvfzsi7qj9+Y8i4ra+a9pk/Nyy/K80m8d+2f1fKjd/N3QQH3K9kzqW6Uw3Cg9N06rnPIlna96z6x5jJ6T7h2W/bj5sUmfGpnXdtJzUdddJ/5BzTupZxtSvoXV6f8X3i2My2T/qZ1Zfq28Df/93446xeby/wbnD8+r4rrduPdr0Obvr+WSy3znO1OtI/3g09Bm62trkGOpCPs/200fI/g0V3cfJlNVkst9Ix5D7DKlby/bY/Zx991q3nvX3Vfn+Yej1x/fpaf4Ofd5h/er+fjNvu39f1b1xda4cdV47PUOeo+u7vrweUjfG5Gez7W/at6y6xqp61JcvQ5991TM082fIM28Sky3r7OnE0us8X1+dOI5rjX/O7va3aR0dWj/yvxver22eB9UxmWwyfnbn7bBrjXvGKl7pnzfn09JneNwzpP/sLtv1+pbV/VbXc24Wz22aH8PLc/2xfEw92vT8TZ5r3L2Gzd3GPF9fOa1ThkPHgf0Bv9nkvkOvfZzrHpulO9dW12unV+KZ1in3sWPw+Ou3x5wx+dnXv252tOeB/c/UHeunz7rZ3O2kx4TxdWF4uW9yn5N67tx9x95rvxw+Nxv7fMfVT/SlYZO87e4bh87DT68vHNpXrFPnF8/bXkvJ32+xrrdufV+nT+jK4778n4ysG+vl27Bj0/bf9/ybPuOYOnUS/Vg7Td3zuOO+f1/+nWS7HlfXqvwYNsfv66uG9mmr09K0Xjntr3HO0PIZcu2x7We98svl3fHW5VXlftz3Wj0+9M8txvRD+bzuGn/6Y/tV99g0nzapz6uuOfZ6q+ro2H5v/zBGWKffOO68WOe5TuLYdIwY2idXvx1bZid1jOlT+mKXdcurux4Mmcee7jGsvYyfWx9nvdv0WY6jHqxzv03bxEm1qVV1e3jdb+6T4LklejYZF4vvT0ZRFP9jWZZ/XxTFV0TEH0TE/1aW5QO17387It5WluX/ffjnP4qI/6Msy8uN69wdEXdHRNx44423PvbYYyeWZq4uRbEVi36s9c3hP1fV3yIinh14t657nYaudA5N06rnPIlna97zuO5RRFk+G0VR/2xMPkTHb4fWmeNyUvc77ee4kvdcp05X562qM4t6FrGqnxnafxyHsW2onr512t/QvDqu661bjzZ9zlXXjo5rLutIRF89GXqfvnOb3236nIs8K4qIZ2tVeGtrMXUYZpM61Xd+EUXxbC0dQ+4zpG7Vy6rrOfvutW49W6efOMl4o56/Q593VbqW9SkiBpTdIg3PPju2zsVRnR1yXjs9q9N1eMbwBB2dt7peD8/PunLg71albdNrVGnpun703GNIvp5UzNh/v0VfcBqx9HE+33GPB03dz9nd/k6qfjXTNGTcOI78GNZv1/NgbF/WumNtPF59rfHx4GLuNHyMfHbAsLVZ3NO89zr9xybftWOgo2+P5blO0qI8l/Vk7FheGRNfrXv+GM3nGnuvIXO39jndz1d0fL6uoePAcc9rNl1HulKW6c611au/nVbWKfeOKw2Kgcf384vrjZ3bxIjfj9GcB0asGvsj+sfMcbHe4rqnG5Ouuv8Qm87Lj+ua6953nXWuMfOKnNOZaxz/vbv7xrRv6OsLrrY17/XWVfNrOuv2sac1jxtSd09ynWmok2z/MeLa6/YXx72W3Z+m7nncaa5Pn6Rxda3Kj9Wx2tB1poh123bXfG+9cjrpdw/Hsa626tojzqrl3fHG3af5bnZYvo5ZK1l1rXXayrj573H1bydRn9dN23HHpNV8Yp1yOu686HOtzGcjxsVCV2qsyjmOtGzS5vrX1yM2W0c+XmPeqZ5W3V031j2d+G/4/Tathye5j2jI+/Rx67E89xRF8dGyLG/Lfbd1kjcuy/LvD//5TxFxf0Tc3vjJ30fE/1T78w2HnzWvc09ZlreVZXnbC1/4wpNKLlehyeTGjm9uPDxWGfKbdX573Jb3nkzynw89f73v19G8Ztc9Jh2f9193/XzYpM6MTeu6aTmp666T/iHnnNSzrLrnOt/fuOL7hbRvWXWtZn1sXqv3ViOMzeMhzzDk/OMq21XXW7cebfqcEV31fDK5sXOcaX7ePR4NcWNnGvKfb1omi/NvbFym+ech11jnvn3nTyY3NtIxZiwf1la7n7PvXuvWs1V9zfhzamePSEd1v3r+Dn3eVb9f1qdhZbdMw7g6F6POa6dndbrWGz/HjRerf9u85+otwxMAACAASURBVKZ9y6prrKpHq2Kn3L8PPb/r3CHPvMngWu8DTyOWXuf5ck5iPBh+ve72t2kdHZq3Q8aN48iP1ddo9t1j+7LWHW/M/3vHr0ddu4pP+ufNY+6fXnfAL3u+W1226/Utq/utrufcLJ4bYrOJQZW+9cfyId8d1/nDtZ9r3L2Gzd3GXLevnNYpw6HjwHHMa8beJ+c41z3WsUxfrk6s106vxDOtU+4dvxgUA4/v58fFQtVvT6afbM8Dq/vl09Ed69d+tdbzDbn/Sdl0jn1c55zUc68zJ8r9fujcbOxvjqufOKnxs7tvHDoPP72+cGhfsV5+3Hhjbi2lO57sX5c97nlc18368n8y8Npj0rGuTa/d9/ybPuOYOnUSedS+Zvc87iTm6Sfdd3Xdd8SvB8/LV8/XVqeh/x5dMcJ65bRJjD5kzW3VtdeNv9bvYze9RseVe6533DHm6nwdu1bSd63ue3T8uje2X3WPTfPpuOec9eusE9et8333WLOIEdbpN447Lzb9zXHZdIwYEwtdqbEqZ0yf0he71P859v4d3wyYx56uMesIp5Xwde+zSfpW1YN17rdpmzipNrWqbg+v+ye/js41q+uvON70iIjdiLi+9u8PRsS3NX7z7RHxoVhsmX95RPw/q6576623HvNf9MzVbDablxE7ZSz+U4rDY6eMmB8eze9yvxv61+yvul7zOFtGbI/4fdexfZTOnZ2ynM3K8uzZMWlaPOfZs93/e5Zh1zlbDv/r95dp7r/HThkxy3y+1XHdM+V0Oj8s+7Hp76sXQ+pMV1rXOer3O3sM1xv6jGPTv1MeHKw6p++eQ9vA2LayUx4crGq7feW8qs7slLPZ/KifmU77r7W93WyXy6Pvu/FHVx7n2mXaBre2xpZPM682raer8n5VPerqe7bLyaReF8b2031tY1EPusaZeh3pHo+G1O3q2WfZ7y9cmGXqzzrPmdaNnZ2ynKePUM7ni3Fm/frY99zpmJuvk4t8TdMxfCwvilXtftEec8+5s1O19Vxdb45pQ9tEf5zRHtPHjmm5etvfXqr8Xdxz6POu7le3txf5urrsdsrJZH5U98bUuXqdXXVe9dv87/LpKop5Tx2arcyr7e3u8aIoFnk0rpxnI+rDqvrXV9Zdz1Z/vtVtq6tNr453FvfY2hqTN331f1ifW9XZfJm1z5lO551j+WRS9T9D29O64+osc/8h6Z9k8mV1Px2ZNpVvf+vW0UXe5NtdVz1eNW5sMj52lVf7mM1Wj59pnV4eZ8505+2q/m05Vg19xmW80j9vzqdl/Dx8TB9Tz+vusu2Pw9f7ru85F881pH2uM9ffdD65LM+0zo8Zy4e22/T86XRMux+zbtD1XOPGhNVzt/Y50+m8J5bIx+URZwbMj3PlnrazxVy2O6ZaPvequtgf93XXgXXWPYbW+cmI8u8fi7raan//03XNTZ6p71mHzKdXx9L5chobA4/v5+fzMWsFm65j9dWN5jxl2Hxi1Zg5PNZrt5nu2H5oXRi/ztVVF6bTvjWlzebl3dc8zrXKZbk1y2hsXNO3dhJxZsCz9bWVsf3EOvk7L7vXvPuO5bNV85juWLSvL+jKu+Mt62HvZVbH3ZNJ2ZpHV207fS/QH0+2fzukvg99tzGkHi3q/4ULXfk/G3Dt4fm22bHpemP++Rdz/rHjzfiYcDlvH/IcuXt3v5Nqpql/HrdOP7pqjX9M37XqOYf8Zsh4kc+P/r59yFxus/ipb76XxhpDyql5rzFlu6p8muuFY+e3Q9/tDD+aeZcvy7HzvaHlPvYZh9bd7vGhe26xc7hWNTSGaP+2WvfPvYOox/bD3gusWhvL5cO6eTP2WJW2oW1rcZw9W65sE/k5+XKO0FWmzVh0db5vkhfdbWxc/Du03o+ZB6/3PMPen+XzfhEDbZq/49KdX3fJ/bY7dul/5ijz88DuepB/hzbs6IqLp9PV56btany/1j+33mRdZbP4o/1c67at/hi+Ow19daO/TQzZezOZ9K2Lr9umVvXZY/r09j4Jnlsi4nJZduwF7vpi0yMi/ueI+H8Pj7+IiDcffv6jEfGjh/9eRMT/FRH/X0T894i4bdV1bTJ+7pnN5uVksl9GFOXW1n65vb3s8Bed/+K7iL3Doygnk/1yOp2Xe3vpgFC9DN7bK8vd3fbnu7vzsija11vcY3Z0r62t/aPNaYu0VcFGlJPJ/uHgsdfojPfKyaT5+d7hPctyfz+dfCzTXj3j8h7Lf+6XEfOjc9Pzls86m5WH+bZ/9DwXLsySfN3drQbDvcFp3ttbHFX6p9N5ubW1vMfu7jLor3++2HAwO/xzdd3zRxuMl2Vf3zi9LJsqj6v0V9es0rPMs3adyeVnVV/299NzI3bL5eJTUUacP7pmev+9sij2krRUeb8IEOr5t1v78+L+W1v7h/ncrHtpWW9vz4/yO62ry3vW82lxjd3k3lU6J5P9ZKJdf5a03ufyrv5drn6m15hOm22lXu71PFm2rXb5t+v0os4u09MOBttpq1+/blFO7fzc2+tql/3fNY+qjymK/u+beXzu3DxTh/bKg4NFfa33Hc12tru7OHdRH5Z5UBS5/rF5j60yLct2H9fV/oqi3d9U+bl4/rR9Ljf6pn1mUewdvYhctM2qPjT7/d1MupfPWvVXu7vL/KnX/2YbaH7XNR5Vz9Vsi5PJLLlP1bcURXnYzpf9+MHBrKf+dLWttE2nf94r62NCTjs/0748HR/zbWg6nSftr/osVye78rVKR7Ns+vrT5jXr329tpZvC6tev50ezrhXFXq3/r7fRdp2s91XVvas83N9f3D93z2b57u7W20j32L7oF9J8zo/Vy/ZSf/7leJj2H+l4mdaDXNut93W5sqvX/2rcX1Xn+vIrd59mvNGVnlwcUE/XfF626m7Vzyw+b+dVs7/P9bXVtZf5UjbKr16PJmXELHmmZhvIxQD1OLQaH2azZryYpn8Z/+Tqc7MuLPOl2Xf1jTNVOfbdY3l+Pq7LxR57e9Umra64ox2fd9XZ9hg/S2LK+ua3XByd1p18Hanadl95pGmtx5iTsihmR+fWY4VmP9AeB6o0pHFys59ux3TL2GNI+0vnXPuHcXyzHPJ9TVp38mN01Sfk2me7L8nP/9L6kIs3947aTb1uT6fLejmZtDcY5/IkV6erc7vGnyH9Yr2fyc8zlv+ei1eabbQ+d+iLDbq05whp3ZtM5p1jzZiybbbRepxb7x+rcbA+92zGBEOesx137pUXLsxa89Xt7Xa9TePgtJ+uz33r8+yIadl8SduMp3Plmdb57vGpvq6R7zua7WF5fj1+atbd3DyiHv/m5w7tWLj7uXJxb9quh87d6msbzX69K+5d9BfpekR9ftwel9v9X1cMnEvjuXO5eKFrraB/nlQfX6fTdNw4f74ZM6dxfBobdI8bRVGtUeTqXi5N1VHlaXvcbvb7fW21a62typNme41ox7EHB/Vnasfc7factpPpdF4rx3Y7qOd717pbO15bxgvrxMD1fq8rXmtqxr/1Pq65plTFBovnyJdxUewdvkRO68aqeX09Pe21iHZsneszcmNmrr3l4pL6umAztk/HkvTcKv35ete9Jp1bM+mLO3Jzxvb6Sr4/bo6TzXiyqp/tdZV8P96Or3N9wfI3Vdvsm4Pn1xzbc4Aqj3J9dD2Wra/v52Lo/Pplvr4t21U7f7uus5jTp2PZuXP1ezfXqaa1mKJ5LJ+tOY/p6hua5Z6uezfz7lwjn+txyaR8/vOnSdyyXJ/uXqtI103yfWiapvZRn2d19WOzWVquk0nful7623Pn0vl2VyxVX5voi0nqc82u9x9lWR6+E6rn2yyZA7fnVO0Yuj5faa7XNddx2nPH7rW+9vpDvWz71xurtbPceks652+vA3aN2810t+P7/NwnXe/qalfdbXhRx9P+5dy5eZJ3Q+Zxq9cN05h2GWt1r/Hn1uTya+FpvWz2CfX3TFX81bXm02ybVZ3qW4dLx952H5FbZ1rEHMsx6vz55bXzaz/tMWzovLb9bjUfb1f3Wvbf9TXbdvydm7/N593jdH69sK89pGXU9f65HrdNp/1rrkPqde69WLuuNuci7bW4ejtuPmPX+7wqJu2r37l2XO83Vq03LMaIdt/UjL3qewSa6V+17r9qfbv7vU/7mZptPn0f0MzzMXnT7PNzmwbTcb+5BtN1veXcMdd/tetgV5tovrPuGmv7yrT9jqBcMQ43615zbns+W89XtbFV62n1NYx6vS+KKq5r1+mudfl2u+qL5dJ+pCvtXXHTZFKWFy6k91v+xXHpWlh7PWHrqF6160uzLJoxSdovVHOoZj04OGiv7UVmraC5fti17rK9nfZR9TWgZhzW9w6tqjNdewhWxcXNOLcZP9XPbaarqvvN9wZd/VZ+r0Tf+5j8/K49jrXf5/bFq7nnasdEXfU9jSFzMWz9vWBfOXXFBPX209ePde29qfdpXf1d8/P6emv3O8R57d1kWvaLtpfG4fX51ZD1WJ5bomeTcbH4/tpx2223lZcvX77SyQAAAAAAAAAAAACAa1pRFB8ty/K23Hdbp50YAAAAAAAAAAAAAODqZpMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAA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ABlJxgAAAAAAAAAAAABARpIxAAAAAAAAAAAAAJCRZAwAAAAAAAAAAAAAZCQZAwAAAAAAAAAAAAAZScYAAAAAAAAAAAAAQEaSMQAAAAAAAAAAAACQkWQMAAAAAAAAAAAAAGQkGQMAAAAAAAAAAAAAGUnGAAAAAAAAAAAAAEBGkjEAAAAAAAAAAAAAkJFkDAAAAAAAAAAAAABkJBkDAAAAAAAAAAAAABlJxgAAAAAAAAAAAABARpIxAAAAAAAAAAAAAJCRZAwAAAAAAAAAAAAAZCQZAwAAAAAAAAAAAAAZScYAAAAAAAAAAAAAQEaSMQAAAAAAAAAAAACQkWQMAAAAAAAAAAAAAGQkGQMAAAAAAAAAAAAAGUnGAAAAAAAAAAAAAEBGkjEAAAAAAAAAAAAAkJFkDAAAAAAAAAAAAABkJBkDAAAAAAAAAAAAABlJxgAAAAAAAAAAAABARpIxAAAAAAAAAAAAAJCRZAwAAAAAAAAAAAAAZCQZAwAAAAAAAAAAAAAZScYAAAAAAAAAAAAAQEaSMQAAAAAAAAAAAACQkWQMAAAAAAAAAAAAAGQkGQMAAAAAAAAAAAAAGUnGAAAAAAAAAAAAAEBGkjEAAAAAAAAAAAAAkJFkDAAAAAAAAAAAAABkJBkDAAAAAAAAAAAAABlJxgAAAAAAAAAAAABARpIxAAAAAAAAAAAAAJCRZAwAAAAAAAAAAAAAZCQZAwAAAAAAAAAAAAAZScYAAAAAAAAAAAAAQEaSMQAAAAAAAAAAAACQkWQMAAAAAAAAAAAAAGQkGQMAAAAAAAAAAAAAGUnGAAAAAAAAAAAAAEBGkjEAAAAAAAAAAAAAkJFkDAAAAAAAAAAAAABkJBkDAAAAAAAAAAAAABlJxgAAAAAAAAAAAABARpIxAAAAAAAAAAAAAJCRZAwAAAAAAAAAAAAAZCQZAwAAAAAAAAAAAAAZScYAAAAAAAAAAAAAQEaSMQAAAAAAAAAAAACQkWQMAAAAAAAAAAAAAGQkGQMAAAAAAAAAAAAAGUnGAAAAAAAAAAAAAEBGkjEAAAAAAAAAAAAAkJFkDAAAAAAAAAAAAABkJBkDAAAAAAAAAAAAABlJxgAAAAAAAAAAAABARpIxAAAAAAAAAAAAAJCRZAwAAAAAAAAAAAAAZCQZAwAAAAAAAAAAAAAZScYAAAAAAAAAAAAAQEaSMQAA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JBkDAAAAAAAAAAAAABlJxgAAAAAAAAAAAABARpIxAAAAAAAAAAAAAJCRZAwAAAAAAAAAAAAAZCQZAwAAAAAAAAAAAAAZScYAAAAAAAAAAAAAQEaSMQAAAAAAAAAAAACQkWQMAAAAAAAAAAAAAGQkGQMAAAAAAAAAAAAAGUnGAAAAAAAAAAAAAEBGkjEAAAAAAAAAAAAAkJFkDAAAAAAAAAAAAABkJBkDAAAAAAAAAAAAABlJxgAAAAAAAAAAAABARpIxAAAAAAAAAAAAAJCRZAwAAAAAAAAAAAAAZCQZAwAAAAAAAAAAAAAZScYAAAAAAAAAAAAAQEaSMQAAAAAAAAAAAACQkWQMAAAAAAAAAAAAAGQkGQMAAAAAAAAAAAAAGUnGAAAAAAAAAAAAAEBGkjEAAAAAAAAAAAAAkJFkDAAAAAAAAAAAAABkJBkDAAAAAAAAAAAAABlJxgAAAAAAAAAAAABARpIxAAAAAAAAAAAAAJCRZAwAAAAAAAAAAAAAZCQZAwAAAAAAAAAAAAAZScYAAAAAAAAAAAAAQEaSMQAAAAAAAAAAAACQkWQMAAAAAAAAAAAAAGQkGQMAAAAAAAAAAAAAGUnGAAAAAAAAAAAAAEBGkjEAAAAAAAAAAAAAkJFkDAAAAAAAAAAAAABkJBkDAAAAAAAAAAAAABlJxgAAAAAAAAAAAABARpIxAAAAAAAAAAAAAJCRZAwAAAAAAAAAAAAAZCQZAwAAAAAAAAAAAAAZScYAAAAAAAAAAAAAQEaSMQAAAAAAAAAAAACQkWQMAAAAAAAAAAAAAGQkGQMAAAAAAAAAAAAAGUnGAAAAAAAAAAAAAEBGkjEAAAAAAAAAAAAAkJFkDAAAAAAAAAAAAABkJBkDAAAAAAAAAAAAABlJxgAAAAAAAAAAAABARpIxAAAAAAAAAAAAAJCRZAwAAAAAAAAAAAAAZCQZAwAAAAAAAAAAAAAZScYAAAAAAAAAAAAAQEaSMQAAAAAAAAAAAACQkWQMAAAAAAAAAAAAAGQkGQMAAAAAAAAAAAAAGUnGAAAAAAAAAAAAAEBGkjEAAAAAAAAAAAAAkJFkDAAAAAAAAAAAAABkJBkDAAAAAAAAAAAAABlJxgAAAAAAAAAAAABARpIxAAAAAAAAAAAAAJCRZAwAAAAAAAAAAAAAZCQZAwAAAAAAAAAAAAAZScYAAAAA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2sbxccnXS6hsMo797+cRY9yGEL4TQviREMJf6rruz49+/5kQwi+EEP6PEML/EEL4l7uu+18z1/nZEMLPhhDCq1evvvzud797tjTz8YlxE/r26yxXD133vTPfI71fb+m9+nRuNpvQXmdr91qbjvr9WvIyxhi+973vTb4rGT5vWzn16agesaq8nzpWTi/GGPrsPC4Pn7K+zJVl01Ua05uLzSXnz13r6xw7LcbPvKy9Ou5etfvtj621MzN3S+Jw/XXW3S97RDGWDue25//Stu1jaR+OcUwfWH7++rOfrg9pb8un9z9co72vbom3tdbVp/n7Lh0vLRtjxfC0MT4XO2l+zLWFc8d9PbTV4eX9+po29Bz2ZT5fP4bPeK40r2tzzi3fDpyvD2rvN8Zx9/H2i+eYD36dLG/LS21K/1t9DND7fsvrZWOLc9x7bbvX2q71x9WOWTsurJ9bP/+p27/DfXunusfycWTrelAvn3cxhiP7ypZr1NuX+biaXq+UV+v7/vkxz7Q/axu3L6lfS+cbx6zlrT//cI2nqGeHtJ573aHV8rpf7y/PM/9rvtKKdY+v07zpsP617Dnn6uBxax3H9JUfwinajOm1km9X5/eyOcnaOVytDqfHza8rnWceOc3XY8dd/TWWtk/r2qaPq30/53u2c431ntpx845Tp6W3fiyz5jmefk3oQ/Qb9TnEse9C5trVuXrUVm5rx6tf//fe66wfX3749uDcawLL8uY08Zue1ztunntcfhz3Tniuzs/nyYd673Y49/h2v+2d1bHOsxfjdGPyp5SusdTK/7i9avzgiDF+p+u6r3K/bc55467rfr/ruj8SQvhDIYQfjzH+6OiQ/zCE8Lrruh8LIfwnIYRfKVznl7uu+6rruq+++c1vnjPJfIS221dnv/Y57zG+35p77c959ar93Nq91qZj7n7D/5bkn2Fbumr2Hi3pOPaY0jn1c9ue40N59aqt3OeOecr68pTXKdWvNenIXat8naeMm/PF4viZl7RXx96rdr/D9+uefVpu563Px9TR4fet+b+0H/xY2odjHNMH1s5r+e0U+VNvy/PxOT5+SV/dEm9rbbfL61PLfZeOl5ac0x//dP36XOyMv59vC+vHnc758qi1Di/t11va0HLMrnneufo6f81hOteW6Vw9bB0/Fq6+8ryZq56xXSpdd+148mPtF9f1hceU58cx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bDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAAABI2GQMAAAAAAAAAAAAACZuMAQAAAAAAAAAAAICETcYAAAAAAAAAAAAAQMImYwAAAAAAAAAAAAAgYZMxAAAAAAAAAAAAAJCwyRgAAAAAAAAAAAAASNhkDAAAAAAAAAAAAAAkbDIGAAAAAAAAAAAA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AAAAAAAAAADISDIGAAAAAAAAAAAAADKSjAEAAAAAAAAAAACAjCRjAAAAAAAAAAAAACAjyRgAAAAAAAAAAAAAyEgyBgAAAAAAAAAAAAAykowBAAAAAAAAAAAAgIwkYwAAAAAAAAAAAAAgI8kYAAAAAAAAAAAAAMhIMgYAAAAAAAAAAAAAMpKMAQAAAAAAAAAAAICMJGMAAAAAAAAAAAAAICPJGAAAAAAAAAAAAADISDIGAAAAAAAAAAAAADKSjAEAAAAAAAAAAACAjCRjAAAAAAAAAAAAACAjyRgAAAAAAAAAAAAAyEgyBgAAAAAAAAAAAAAykowBAAAAAAAAAAAAgIwkYwAAAAAAAAAAAAAgI8kYAAAAAAAAAAAAAMhIMgYAAAAAAAAAAAAAMpKMAQAAAAAAAAAAAICMJGMAAAAAAAAAAAAAICPJGAAAAAAAAAAAAADISDIGAAAAAAAAAAAAADKSjAEAAAAAAAAAAACAjCRjAAAAAAAAAAAAACAjyRgAAAAAAAAAAAAAyEgyBgAAAAAAAAAAAAAykowBAAAAAAAAAAAAgIwkYwAAAAAAAAAAAAAgI8kYAAAAAAAAAAAAAMhIMgYAAAAAAAAAAAAAMpKMAQAAAAAAAAAAAICMJGMAAAAAAAAAAAAAICPJGAAAAAAAAAAAAADISDIGAAAAAAAAAAAAADKSjAEAAAAAAAAAAACAjCRjAAAAAAAAAAAAACAjyRgAAAAAAAAAAAAAyEgyBgAAAAAAAAAAAAAykowBAAAAAAAAAAAAgIwkYwAAAAAAAAAAAAAgI8kYAAAAAAAAAAAAAMhIMgYAAAAAAAAAAAAAMpKMAQAAAAAAAAAAAICMJGMAAAAAAAAAAAAAICPJGAAAAAAAAAAAAADISDIGAAAAAAAAAAAAADKSjAEAAAAAAAAAAACAjCRjAAAAAAAAAAAAACAjyRgAAAAAAAAAAAAAyEgyBgAAAAAAAAAAAAAykowBAAAAAAAAAAAAgIwkYwAAAAAAAAAAAAAgI8kYAAAAAAAAAAAAAMhIMgYAAAAAAAAAAAAAMpKMAQAAAAAAAAAAAICMJGMAAAAAAAAAAAAAICPJGAAAAAAAAAAAAADISDIGAAAAAAAAAAAAADKSjAEAAAAAAAAAAACAjCRjAAAAAAAAAAAAACAjyRgAAAAAAAAAAAAAyEgyBgAAAAAAAAAA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YwAAAAAAAAAAAACgImQMAAAAAAAAAAAAAFSEjAEAAAAAAAAAAACAipAxAAAAAAAAAAAAAFARMgYAAAAAAAAAAAAAKkLGAAAAAAAAAAAAAEBFyBgAAAAAAAAAAAAAqAgZAwAAAAAAAAAAAAAVIWMAAAAAAAAAAAAAoCJkDAAAAAAAAAAAAABUhIwBAAAAAAAAAAAAgIqQMQAAAAAAAAAAAABQETIGAAAAAAAAAAAAACpCxgAAAAAAAAAAAABARcgYAAAAAAAAAAAAAKgIGQMAAAAAAAAAAAAAFSFjAAAAAAAAAAAAAKAiZAwAAAAAAAAAAAAAVISMAQAAAAAAAAAAAICKkDEAAAAAAAAAAAAAUBEyBgAAAAAAAAAAAAAqQsYAAAAAAAAAAAAAQEXIGAAAAAAAAAAAAACoCBkDAAAAAAAAAAAAABUhYwAAAAAAAAAAAACgImQMAAAAAAAAAAAAAFSEjAEAAAAAAAAAAACAipAxAAAAAAAAAAAAAFARMgYAAAAAAAAAAAAAKkLGAAAAAAAAAAAAAEBFyBgAAAAAAAAAAAAAqAgZAwAAAAAAAAAAAAAVIWMAAAAAAAAAAAAAoCJkDAAAAAAAAAAAAABUhIwBAAAAAAAAAAAAgIqQMQAAAAAAAAAAAABQETIGAAAAAAAAAAAAACpCxgAAAAAAAAAAAABARcgYAAAAAAAAAAAAAKgIGQMAAAAAAAAAAAAAFSFjAAAAAAAAAAAAAKAiZAwAAAAAAAAAAAAAVISMAQAAAAAAAAAAAICKkDEAAAAAAAAAAAAAUBEyBgAAAAAAAAAAAAAqQsYAAAAAAAAAAAAAQEXIGAAAAAAAAAAAAACoCBkDAAAAAAAAAAAAABUhYwAAAAAAAAAAAACgImQMAAAAAAAAAAAAAFSEjAEAAAAAAAAAAACAipAxAAAAAAAAAAAAAFARMgYAAAAAAAAAAAAAKkLGAAAAAAAAAAAAAEBFyBgAAAAAAAAAAAAAqAgZAwAAAAAAAAAAAAAVIWMAAAAAAAAAAAAAoCJkDAAAAAAAAAAAAABUhIwBAAAAAAAAAAAAgIqQMQAAAAAAAAAAAABQETIGAAAAAAAAAAAAACpCxgAAAAAAAAAAAABARcgYAAAAAAAAAAAAAKgIGQMAAAAAAAAAAAAAFSFjAAAAAAAAAAAAAKAiZAwAAAAAAAAAAAAAVISM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\n","text/plain":[""]},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","source":["---"],"metadata":{"id":"okSRnAAa3C1h"}},{"cell_type":"code","source":["!pip install -q watermark\n","%reload_ext watermark\n","%watermark -a \"Sparsh A.\" -m -iv -u -t -d -p tensorflow"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"e0yZVSfA3C1i","executionInfo":{"status":"ok","timestamp":1639031012561,"user_tz":-330,"elapsed":3342,"user":{"displayName":"Sparsh Agarwal","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"13037694610922482904"}},"outputId":"e4bd5bc3-8eb5-40f2-933e-649be381b6a2"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Author: Sparsh A.\n","\n","Last updated: 2021-12-09 06:23:40\n","\n","tensorflow: 2.7.0\n","\n","Compiler : GCC 7.5.0\n","OS : Linux\n","Release : 5.4.104+\n","Machine : x86_64\n","Processor : x86_64\n","CPU cores : 2\n","Architecture: 64bit\n","\n","pandas : 1.1.5\n","IPython : 5.5.0\n","numpy : 1.19.5\n","matplotlib: 3.2.2\n","\n"]}]},{"cell_type":"markdown","source":["---"],"metadata":{"id":"4fXtJXo_3C1j"}},{"cell_type":"markdown","source":["**END**"],"metadata":{"id":"N_GGXd7u3C1j"}}]}