Site icon Machine Learning Projects

Movie Recommendation System in 2 ways – with source code – 2023

Machine Learning Projects

So one of the most awaited blogs is finally here. Today we will be building a Movie Recommendation System that will produce very good results in very less lines of code. So without any further due, let’s do it…

First way

Step 1 – Importing packages required for Movie Recommendation System.

import pandas as pd

Step 2 – Reading input data.

df1 = pd.read_csv('u.data',sep='\t')
df1.columns = ['user_id','item_id','rating','timestamp']
df1.head()

Step 3 – Reading Movie titles.

df2 = pd.read_csv('Movie_Id_Titles')
df2.head()

Step 4 – Merging movie data and movie titles.

df = pd.merge(df1,df2,on='item_id')
df.head()

Step 5 – Grouping same movie entries.

rating_and_no_of_rating = pd.DataFrame(df.groupby('title')['rating'].mean().sort_values(ascending=False))
rating_and_no_of_rating

Step 6 – Adding a column of no. of ratings.

rating_and_no_of_rating['no_of_ratings'] = df.groupby('title')['rating'].count()
rating_and_no_of_rating

Step 7 – Sorting on no. of ratings.

rating_and_no_of_rating = rating_and_no_of_rating.sort_values('no_of_ratings',ascending=False)
rating_and_no_of_rating.head()

Step 8 – Creating a pivot table.

pt = df.pivot_table(index='user_id',columns='title',values='rating')
pt.head()

Step 9 – Checking movie names.

rating_and_no_of_rating.index

Step 10 – Live Prediction.

test_movie = input('Enter movie name --> ')

movie_vector = pt[test_movie].dropna()
similar_movies = pt.corrwith(movie_vector)

corr_df = pd.DataFrame(similar_movies,columns=['Correlation'])
corr_df = corr_df.join(rating_and_no_of_rating['no_of_ratings'])

corr_df = corr_df[corr_df['no_of_ratings']>100].sort_values('Correlation',ascending=False).dropna()
corr_df.head(10)

Download Source Code and Data for Movie Recommendation System…

Second way

The simple intuition of this 2nd way is that we will be combining the main features like the cast, director, genres, etc., and observe similarities between them because most of the time similar directors make similar movies, similar casts like to perform in some similar specific types of movies.

Step 1 – Importing libraries required for Movie Recommendation System.

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity

Step 2 – Reading input data.

org_movies = pd.read_csv('movie_dataset.csv')
org_movies.head(3)
Input Data

Step 3 – Checking columns of our data.

org_movies.columns

Step 4 – Just keep important columns.

movies = org_movies[[ 'genres', 'keywords','cast', 'title', 'director']]
movies.head()

Step 5 – Checking info of our data.

movies.info()
Some NULL values present

Step 6 – Filling Null values.

movies.fillna('',inplace=True)

Step 7 – Again check the info.

movies.info()
No NULL values

Step 8 – Make a column called combined features.

movies['combined_features'] = movies['genres'] +' '+ movies['keywords'] +' '+ movies['cast'] +' '+ movies['title'] +' '+ movies['director']
movies.head()

Step 9 – Observe the first entry in the combined feature column.

movies.iloc[0]['combined_features']

Step 10 – Initializing CountVectorizer.

cv = CountVectorizer()
count_matrix = cv.fit_transform(movies['combined_features'])

Step 11 – Finding similarities between different entries.

cs = cosine_similarity(count_matrix)
cs.shape

Step 12 – Two utility functions.

def get_movie_name_from_index(index):
    return org_movies[org_movies['index']==index]['title'].values[0]
def get_index_from_movie_name(name):
    return org_movies[org_movies['title']==name]['index'].values[0]

Step 13 – Printing all movie names.

print(list(movies['title']))
All movie names

Step 14 – Live predictor.

test_movie_name = input('Enter Movie name --> ')
test_movie_index = get_index_from_movie_name(test_movie_name)
movie_corrs = cs[test_movie_index]
movie_corrs = enumerate(movie_corrs)
sorted_similar_movies = sorted(movie_corrs,key=lambda x:x[1],reverse=True)
for i in range(10):
    print(get_movie_name_from_index(sorted_similar_movies[i][0]))
Final Results

Download Source Code for Movie Recommendation System…

NOTE – To download data open the following link, right-click and save as.

Download Data for Movie Recommendation System…

Do let me know if there’s any query regarding Movie Recommendation System by contacting me on email or LinkedIn.

So this is all for this blog folks, thanks for reading it and I hope you are taking something with you after reading this and till the next time ?…

Read my previous post: IPL SCORE PREDICTION WITH FLASK APP

Check out my other machine learning projectsdeep learning projectscomputer vision projectsNLP projectsFlask projects at machinelearningprojects.net.

Exit mobile version