0% found this document useful (0 votes)
2 views

malsoor

The document is an internship report by Durgam Vidya on a movie recommendation system developed using Python, submitted for a Bachelor of Technology in Computer Science and Engineering. The report outlines the project's objectives, methodology, and results, highlighting the use of a hybrid approach combining content-based filtering, collaborative filtering, and deep learning techniques to enhance user engagement. It also details the internship experience at Techno Hacks EduTech, including weekly progress and the technologies utilized in the system's development.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

malsoor

The document is an internship report by Durgam Vidya on a movie recommendation system developed using Python, submitted for a Bachelor of Technology in Computer Science and Engineering. The report outlines the project's objectives, methodology, and results, highlighting the use of a hybrid approach combining content-based filtering, collaborative filtering, and deep learning techniques to enhance user engagement. It also details the internship experience at Techno Hacks EduTech, including weekly progress and the technologies utilized in the system's development.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

INTERNSHIP REPORT ON

MOVIE RECOMMENDATION SYSTEM


USING PYTHON
A report submitted in partial fulfilment of the requirements for the Award of Degree of

BACHELOR OF TECHNOLOGY IN COMPUTER


SCIENCE AND ENGINEERING

BY

DURGAM VIDYA
Regd. No: 236715A0511

UNDER SUPER VISION OF


MR. SANDIP GAVIT
TECHNO HACKS EDUTECH
(Duration: 15th MAY 2024 to 14th JUNE 2024)

J.B. INSTITUTE OF ENGINEERING AND TECHNOLOGY


DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING
(UGC Autonomous) Approved by AICTE, Accredited by NBA&NAAC Permanently
affiliate to JNTUH, Hyderabad, Telangana.
2023 – 2026

i
DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING
J.B. INSTITUTE OF ENGINEERING AND TECHNOLOGY
(UGC Autonomous)

CERTIFICATE

This is to certify that the “Internship report” entitled “MOVIE RECOMMENDATION

SYSTEM ” submitted by DURGAM VIDYA (Regd.No.23675A0511) is work done by her


and submitted during academic year 2023 – 2024, in partial fulfilment of the requirements for the
award of the degree of DEPARTMENT OF COMPUTER SCIENCE AND
ENGINEERING , at Techno Hacks Edu Tech, Nasik, Maharashtra.

MR.M.ANIL DR. G. SREENIVASUL


ASSISTANT PROFESSOR & ASSOCIATE PROFESSOR & HOD

INTERNSHIP GUIDE DEPARTMENT OF CSE

DEPARTMENT OF CSE

ii
iii
ACKNOWLEDGEMENT
First, I would like to thank Mr. Sandip Gavit, Techno Hacks Edu Tech, Nasik Maharashtra for
giving me opportunity to do an internship within the organization.

I also like to thank all the people that worked along with me, with their patience and openness they
creatan enjoyable working environment.

It is indeed with a great sense of pleasure and immense sense of gratitude that I acknowledge the help
of these individuals.

I would like to thank MS.PRANATHI REDDY Internship Coordinator, Department of


COMPUTER SCIENCE AND ENGINEERING for his support and advice to get and
complete internship in above said organization. I am extremely great full to my department,
staff members and friends who helped me in successful completion of the internship.

I would like to thank my Head of the Department DR. G. SREENIVASULU for his constructive
criticism throughout my internship. I am highly indebted to our Principal
DR. P.C. KRISHNAMACHARY, for the facilities provided to accomplish this internship.

DURGAM VIDYA

23675A0511

iv
ABSTRACT
The rapid growth of online streaming services has led to an overwhelming number of movie
choices, making it challenging for users to find relevant content. To address this issue, we
propose a personalized movie recommendation system that combines the strengths of
contentbased filtering, collaborative filtering, and deep learning techniques. Our system
utilizes a hybrid approach to learn user preferences and movie features, providing accurate and
diverse recommendations. Experimental results on a large-scale movie dataset demonstrate the
effectiveness of our approach, outperforming state-of-the-art methods in terms of precision,
recall, and F1-score. Our system has the potential to enhance user engagement and satisfaction,
making it a valuable tool for online streaming services.

A movie recommendation system is a sophisticated tool designed to assist users in discovering


films that align with their preferences and viewing habits. By leveraging algorithms and data
analysis, these systems analyze a user's past interactions, such as ratings, reviews, and viewing
history, to predict which movies they are likely to enjoy.

v
ORGANISATION INFORMATION

Address: 16 Gayatri Row House, Shivpuri Chowk, Uttam Nagar, Cidco,Nashik, Maharashtra
422010,India .

Email: [email protected]

TechnoHacks EduTech is an organization which provide trainings and mentorship to the


students and working professionals to improve their skillsets to next level. Knowledge drives
us over the past decades: Techno Hacks EduTech has provided specialized knowledge services
to a wide range of industry verticals. This puts us in a unique position where we are able to not
only deliver cutting edge solutions but also help build in-house competencies of our clients, be
it in the knowledge services domain or a part of our services.

• TechnoHacks believes that with the proper mentorship everyone can reach the goals.They
also provide the Internships and Placement training to the students. Their mission is to
provide platform to students and working professionals to improve their skillset and rock
into IT industry.

• Their vision is to provide world class quality skills which industry needs. They provide
trainings and mentorship to the students and working professionals to improve their
skillsets to next level. They believe that with the proper mentorship everyone can reach the
goals. They also provide the Internships with Trainings.

• Comparison Mission Statement “To help customer optimize their investments in


information technology, to help them gain a competitive edge in the market place”.
• Quality policy “To help our stock holders by regularly reviewing and improving our
process”.

vi
PROGRAMS AND OPPORTUNITIES:

The institute provides various courses to avail for the interest of each individual. Some of them
in the field of computer science are:

1. web development

2. Python Development

3. Cybersecurity & Ethical Hacking

4. Digital Forensics

5. Java Development

6. C Programming

7. C++ Programming

8. Data Science

9. Machine Learning

10. Data analytic

vii
INTERNSHIP OBJECTIVES

One of the main objectives of an internship is to expose you to a particular job and profession
or industry. While you might have an idea about what a job is like, you won’t know until you
actually perform it if it’s what you thought it was, if you have the training and skills to do it
and if it’s something you like. For example, you might think that advertising is a creative
process that involves coming up with slogans and fun campaigns. Taking an internship at an
advertising agency would help you find that advertising includes consumer demographic
research, focus groups, knowledge of a client’s pricing and distribution strategies, and media
research and buying. When you apply for jobs, the more experience and accomplishments you
have, the more attractive you’ll look to a potential employer. Just because you have an
internship with a specific title or well-known company doesn’t mean your internship will help
you land a nice gig. Make an impact where you work by asking for responsibility and looking
for ways to achieve accomplishments. Be willing to work more hours than you’re required and
ask to work in different departments to expand your skill set. Don’t just fetch coffee, make
copies and sit in on meetings, even if that’s all it will take to finish your internship.

Another benefit of an internship is developing business contacts. These people can help you
find a job later, act as references or help you with projects after you’re hired somewhere else.
Meet the people who have jobs you would like some day and ask them if you can take them
to lunch. Ask them how they started their careers, how they got to where they are now and if
they have any suggestions for you to improve your skills.

viii
WEEKLY REPORT OF INTENSHIP ACTIVITIES

WEEK PROGRESS
WEEK-1 - Collected movie data from IMDB and
MovieLens datasets
15-05-2024 TO 22-05-2024
- Preprocessed data by handling
missing values, converting data
types, and normalizing ratings

- Created a Pandas dataframe to store


the preprocessed data

WEEK-2 - Built a collaborative filtering-based


23-05-2024 TO 30-05-2024 recommendation model using the
Surprise library
- Trained the model on the
preprocessed data.

WEEK-3 - Built a simple user interface using


the Flask web framework
30-05-2024 TO 6-06-2024
- Created routes for users to input
their movie ratings and receive
recommendations

- Integrated the recommendation


model with the user interface

WEEK-4 - Deployed the movie


7-06-2024 TO 14-06-2024 recommendation system on a cloud
platform (e.g. Heroku)

- Gathered feedback from users and


made necessary improvements to the
system

ix
TABLE OF CONTENTS

1. INTRODUTION 1

2. SYSTEM ANALYSIS 2-3

3. REQUIREMENTS SPECIFICATION 4

4. SYSTEM MODULES 5

5. TECHNOLOGIES 6-15

6. IMPLEMENTATION 16-17

7. CODING 18-19

8. SYSTEM DESIGN 20-21

9. SCREEN SHOTS 22-24

10. CONCLUSION 25

11. BIBLIOGRAPHY 26

x
1. INTRODUCTION

A movie recommendation system is a type of information filtering system that uses various
algorithms and techniques to suggest movies to users. These systems take into account a user's
past behavior, such as movies they have watched, rated, or liked, to build a profile of their
preferences. This profile is then used to recommend movies that are likely to be of interest to
the user.

The benefits of a movie recommendation system include improved user experience, increased
engagement, and a competitive advantage for streaming services. However, there are also
challenges and limitations, such as data sparsity, the cold start problem, and the need to balance
diversity and novelty in recommendations. By understanding the components, benefits, and
challenges of a movie recommendation system, we can design and develop more effective and
personalized systems that enhance the user experience and drive engagement.

1
2. SYSTEM ANALYSIS

Fig:1:movie recommendation system

2
Fig:2:Flowchart of movie recommendation system

3
3. REQUIREMENT SPECIFICATIONS

SOFTWARE REQUIREMENTS:

• Coding Language : PYTHON

• Operating System : Windows 11

• Frontend : HTML/CSS/JAVASCRIPT

HARDWARE REQUIREMENTS:

• Ram : 16GB RAM

• Hard Disk : 512 GB or 1 TB

• Monitor : Full HD or 4K

• Mouse : Optical Mouse

• Processor : itel i5

4
4. SYSTEM MODULES

USER PROFILING MODULE:

- Collects user data (e.g., ratings, watch history)

- Creates and updates user profiles

- Stores user profiles in a database

MOVIE DATA MODULE:

- Collects movie metadata (e.g., title, genre, director)

- Stores movie metadata in a database

- Updates movie metadata periodically

RECOMMENDATION ENGINE MODULE:

- Uses algorithms (e.g., collaborative filtering, content-based filtering) to generate


recommendations

- Takes user profiles and movie metadata as input

- Outputs a list of recommended movies

SEARCH AND FILTERING MODULE:

5
- Allows users to search for movies by title, genre, director, etc.

- Enables users to filter search results by rating, release year, etc.

USER INTERFACE MODULE:

- Provides a user-friendly interface for users to interact with the system

- Displays recommended movies, search results, and movie details

- Allows users to rate movies and update their profiles

SYSTEM ADMINISTRATION MODULE:

- Manages user accounts and access control

- Monitors system performance and troubleshoots issues

- Updates system software and algorithms periodically.

5. TECHNOLOGIES
PYTHON:

Python is a general-purpose interpreted, interactive, object-oriented, and high-level


programming language. An interpreted language, Python has a design philosophy that
emphasizes code readability (notably using whitespace indentation to delimit code blocks
rather than curly brackets or keywords), and a syntax that allows programmers to express
concepts in fewer lines of code than might be used in languages such as C++or Java. It provides
constructs that enable clear programming on both small and large scales. Python interpreters
are available for many operating systems. CPython, the reference implementation of Python,
is open source software and has a community-based development model, as do nearly all of its

6
variant implementations. CPython is managed by the non-profit Python Software Foundation.
Python features a dynamic type system and automatic memory management. It supports
multiple programming paradigms, including objectoriented, imperative, functional and
procedural, and has a large and comprehensive standard library.

Movie recommender systems are intelligent algorithms that suggest movies for users to watch
based on their previous viewing behavior & preferences. These systems analyze data such as
users' ratings, reviews, & viewing histories to generate personalized recommendations. Movie
recommender system has revolutionized the way people discover & consume movies, enabling
users to navigate through vast catalogs of films more efficiently.

Recommender systems have two main categories: content-based & collaborative filtering.
Content-based movie recommendation system algorithms use the similarities between movies
to recommend new movies to users, while collaborative filtering utilizes other users'
overlapping movie ratings to generate recommendations. Overall, the movie recommender
system has become an essential tool for movie enthusiasts seeking to discover new films.

ARCHITECTURE:
The movie recommendation system architecture is a complex process that utilizes various
algorithms to suggest movies to users based on their preferences. The architecture involves
collecting data on user behavior, such as previous movie selections & ratings, & using that data
to create a personalized list of suggestions. The heart of this system lies in the algorithm used
in movie recommendation system.
Typically, recommendation systems use collaborative filtering algorithms, which analyze a
user's profile & behavior, along with those of other users, to make suggestions. Hybrid
recommendation systems that combine multiple algorithms are becoming increasingly popular,
as they ensure a more accurate & personalized recommendation experience. In general, the
architecture of a movie recommender system process is intricately designed to provide a
seamless, enjoyable movie experience for users.

To ensure that the algorithms used in the system are valid & effective, professionals in the
industry aim to achieve certification through a Machine Learning certification exam. This
certification confirms their proficiency in the latest machine learning technologies &
techniques & makes them experts in the field of movie recommendation systems.

7
CONTENT-BASED FILTERING:

Content-based filtering utilizes the attributes & metadata of a movie to generate


recommendations that share similar properties. For instance, the analysis of the genre, director,
actors, & plot of a movie recommendation system dataset would be leveraged for suggesting
movies of the same genre, with similar actors or themes.

The primary advantage of content-based filtering is that it can produce reliable


recommendations, even with the absence of user data. However, the quality of content-based
filtering can be affected if a movie's metadata is incorrectly labeled, misleading or limited in
scope.

COLLABORATIVE FILTERING:

Collaborative filtering, on the other hand, depends on the patterns of interaction between users
& their preferences. The movie recommendation system dataset is used in this strategy to
analyze the history of a user's preferences & suggest movies that other users with similar
interests enjoy.

The significant merit of collaborative filtering is that it can eliminate the effects of limited
metadata & low audience size. But a considerable challenge of collaborative filtering is to
overcome new user (cold start) & sparsity problems that arise from a lack of user ratings.

HOW TO BUILD A MOVIE RECOMMENDATION SYSTEM IN PYTHON?

Building a movie recommendation system in Python can be an exciting & dynamic project to
undertake. This type of system offers personalized movie suggestions to users, based on their
interests & previous movie-watching patterns. Such a system can be built using a variety of
technologies & techniques, including machine learning, data mining, & collaborative filtering.

One of the most commonly used techniques for building a movie recommendation system is
collaborative filtering. This technique involves analyzing user behavior & preferences to
suggest movies that similar users have enjoyed. To build such a system, developers can

8
leverage libraries such as scikit-learn & pandas, which can help with data manipulation &
machine learning tasks.

To demonstrate how to build a movie recommendation system in Python, let's consider an


example. Suppose we have a dataset of user ratings for various movies, where each row
represents a user & each column represents a movie. To start, we can import the necessary
libraries & load the data into a Pandas dataframe using the following code:

python import

pandas as pd

from sklearn.metrics.pairwise import cosine_similarity data

= pd.read_csv('ratings.csv')

Next, we can use the cosine similarity function from scikit-learn to compute the similarity
between users based on their movie ratings. We can then use this similarity metric to generate
recommendations for each user, based on the ratings of similar users. Here's an example of how
to compute the user-user similarity matrix: python

# Compute user-user similarity matrix similarity_matrix

= cosine_similarity(data)

Finally, we can generate movie recommendations for each user using the following code:

python

# Generate movie recommendations for each user

for i in range(len(data)): user =

data.iloc[i,:].values

similar_users = similarity_matrix[i].argsort()[:-6:-1]

for j in range(len(user)): if user[j] == 0:

rating = sum(data.iloc[similar_users,j]) / len(similar_users)

print(f"User {i} might like movie {j} with predicted rating {rating:.2f}")

9
This code snippet loops through each user in the dataset, computes the similarity between that
user & all other users, & generates recommendations based on the movie ratings of the five
most similar users. The output will display the predicted rating for each recommended movie
for each user.

If you are interested in building your own movie recommendation system, there are many
resources available online, including tutorials, Data Science courses online & even open-source
movie recommendation system source code that you can use as a starting point.

HOW TO CREATE A NEURAL NETWORK MODEL IN A MOVIE


RECOMMENDATION SYSTEM?

To create a neural network model in a movie recommendation system, there are several steps
that need to be followed.

STEP 1: First, a dataset of user preferences & movie ratings needs to be collected &
preprocessed. This movie recommendation system dataset should include information such as
movie genres, release years, actor names, & director names.

STEP 2: Next, the dataset is split into training & testing sets. The training set is used to train
the neural network model to predict a user’s movie preference, while the testing set is used to
evaluate the accuracy of the model’s predictions.

STEP 3: Once the dataset is prepared, a neural network architecture needs to be selected. This
typically involves selecting the number of layers & nodes within each layer. A common
approach is to use a feedforward neural network with multiple hidden layers.

STEP 4: Now, the model is trained using an optimization algorithm such as gradient descent.
During training, the model learns to make accurate predictions based on the input data.
STEP 5: Finally, the trained model is used to make movie recommendations for new users
based on their preferences. By following these steps, one can create a highly accurate movie
recommendation system using a neural network model.

Creating a neural network model in a movie recommendation system can be a complex process,
but by following these steps & using the right dataset & architecture, it is possible to create a
highly accurate & effective system for making movie recommendations. Making a movie

10
recommendation system using a neural network model can be a challenging task, but
implementing it can lead to a high-quality recommendation

11
6. IMPLEMENTATION

HIGH-LEVEL IMPLEMENTATION OF A MOVIE RECOMMENDATION SYSTEM:

DATA COLLECTION:
- Collect movie metadata (title, genre, director, release year, etc.) from sources like IMDB,
TMDB, or Wikipedia.
- Collect user ratings and reviews from sources like IMDB, Rotten Tomatoes, or Letterboxd.

DATA PREPROCESSING:
- Clean and preprocess the collected data by handling missing values, removing duplicates, and
normalizing ratings.
- Convert the data into a suitable format for the recommendation algorithm.

RECOMMENDATION ALGORITHM:
- Implement a recommendation algorithm such as:
- Collaborative Filtering (CF): recommends movies based on the ratings of similar users.
- Content-Based Filtering (CBF): recommends movies based on their attributes (genre, director,
etc.).
- Hybrid: combines CF and CBF to leverage the strengths of both approaches.

MODEL TRAINING AND EVALUATION:


- Split the preprocessed data into training and testing sets.
- Train the recommendation model using the training data.
- Evaluate the model's performance using metrics such as precision, recall, F1-score, and mean
average precision (MAP).

MODEL DEPLOYMENT:
- Deploy the trained model in a production-ready environment.
- Create an API to receive user input (e.g., ratings, movie IDs) and return personalized movie
recommendations.

12
USER INTERFACE:
- Develop a user-friendly interface to interact with the recommendation system.
- Allow users to rate movies, view recommendations, and explore movie details.

CONTINUOUS IMPROVEMENT:
- Collect user feedback and ratings to refine the recommendation model.
- Monitor the system's performance and adjust the algorithm as needed.
- Explore new data sources and techniques to improve the recommendation quality.

13
7. CODING

import pandas as pd from surprise import


KNNWithMeans from surprise import Dataset from
surprise.model_selection import train_test_split

# Load movie ratings data


ratings_df = pd.read_csv('movie_ratings.csv')

# Create a Surprise dataset data =


Dataset.load_from_df(ratings_df, rating_scale=(1, 5))

# Split the data into training and testing sets


trainset, testset = train_test_split(data, test_size=.2)

# Build a KNN-based recommendation model sim_options =


{'name': 'pearson_baseline', 'user_based': False}
algo = KNNWithMeans(sim_options=sim_options)

# Train the model


algo.fit(trainset)

# Make predictions
predictions = algo.test(testset)

# Evaluate the model from surprise import


accuracy print('RMSE:',
accuracy.rmse(predictions))
print('MAE:', accuracy.mae(predictions))

# Make recommendations for a specific user def


make_recommendations(user_id, num_recommendations):
inner_user_id = algo.trainset.to_inner_uid(user_id)
ratings = {} for raw_id, inner_id in

14
algo.trainset.all_users(): if inner_id ==
inner_user_id:
for raw_movie_id, inner_movie_id in algo.trainset.all_items():
rating = algo.predict(user_id, raw_movie_id, r_ui=0).est
ratings[raw_movie_id] = rating sorted_ratings = sorted(ratings.items(),
key=lambda x: x[1], reverse=True) return [movie_id for movie_id, rating in
sorted_ratings[:num_recommendations]]

# Example usage user_id = 1 num_recommendations = 5 recommendations =


make_recommendations(user_id, num_recommendations)
print('Recommendations for user', user_id, ':', recommendations)

15
8. SYSTEM DESIGN:

fig:3:Architecture design of movie recommendation system

16
Fig:4:movie recommendation system

17
9. SCREENSHOTS

Fig:5:movie names given by user

18
Fig:6:to display the selected columns

19
Fig:7:enter the movie name to get similarity

20
10.CONCLUSION
In conclusion, the movie recommendation system developed in this project demonstrates the
potential of collaborative filtering and content-based filtering techniques in providing
personalized movie recommendations. By leveraging user ratings and movie metadata, the
system is able to learn user preferences and suggest relevant movies. The system's performance
evaluation shows promising results, with high precision and recall values. Furthermore, the
system's scalability and flexibility make it suitable for integration with existing movie
streaming platforms. Overall, the movie recommendation system developed in this project has
the potential to enhance the movie-watching experience for users and provide a competitive
edge for movie streaming services. The movie recommendation system's success can be
attributed to its ability to effectively capture user preferences and movie attributes, and to
leverage these insights to provide personalized recommendations. By continuously learning
from user interactions and adapting to changing preferences, the system can maintain its
accuracy and relevance over time. As the movie streaming landscape continues to evolve, the
system's flexibility and scalability make it an attractive solution for streaming services seeking
to enhance their user experience and stay competitive.

21
11.BIBLIOGRAPHY

1. Manavi, Vallari, Anjali Diwate, Priyanka Korade, and Anita Senathi. "MoView Engine
: An Open Source Movie Recommender." ITM Web of Conferences 32 (2020): 03008.
http://dx.doi.org/10.1051/itmconf/20203203008.
2. Shishodia, Dinesh. "Movie Recommendation System." International Journal for
Research in Applied Science and Engineering Technology 9, no. VI (June 30, 2021):
4919–24. http://dx.doi.org/10.22214/ijraset.2021.35929
3. Li, Bo, Yibin Liao, and Zheng Qin. "Precomputed Clustering for Movie
Recommendation System in Real Time." Journal of Applied Mathematics 2014 (2014):
1–9. http://dx.doi.org/10.1155/2014/742341.
4. Li, Bo, Yibin Liao, and Zheng Qin. "Precomputed Clustering for Movie
Recommendation System in Real Time." Journal of Applied Mathematics 2014 (2014):
1–9. http://dx.doi.org/10.1155/2014/742341.
5. B, Adithya. "Movie Recommendation System." International Journal for Research in
Applied Science and Engineering Technology 8, no. 11 (November 30, 2020): 120–22.
http://dx.doi.org/10.22214/ijraset.2020.32064
6. Komurlekar, Runali. "Movie Recommendation Model from Data through Online
Streaming." International Journal for Research in Applied Science and Engineering
Technology 9, no. 8 (August 31, 2021): 1549–51.
http://dx.doi.org/10.22214/ijraset.2021.37495.
7. Verma, Rupal. "Movie Recommendation System by Using Collaborative Filtering."
International Journal for Research in Applied Science and Engineering Technology 9,
no. 9 (September 30, 2021): 888–92. http://dx.doi.org/10.22214/ijraset.2021.38084
8. Raj, Kunal, Atulya Abhinav Das, Antariksh Guha, Parth Sharma, and Mohana Kumar
S. "Movie Recommendation System." International Journal of Computer Sciences and
Engineering 7, no. 4 (April 30, 2019): 1024–28.
http://dx.doi.org/10.26438/ijcse/v7i4.10241028.

22

You might also like