Welcome to our Movie Recommendation System, where movie suggestions go beyond the ordinary. This intelligent application blends advanced recommendation strategies, including Collaborative Filtering, Content-Based Recommendation, and Non-Personalized Approaches, to curate a personalized and engaging movie-watching experience.
Finding the perfect movie can be a challenge, especially for new users. Our system addresses this by seamlessly transitioning from non-personalized recommendations to advanced models. Whether you're a seasoned critic or a first-time viewer, our system adapts to your preferences.
The Simple Recommender system offers universal movie suggestions by considering overall popularity and occasional genre preferences. This model prioritizes movies with higher popularity and critical acclaim, assuming they are more likely to be appreciated by the average audience.
Implementation:
- Movies are sorted based on ratings and popularity.
- Top movies from this sorted list are presented.
- Users can specify a genre for personalized recommendations.
Mathematical Model (IMDB's Weighted Rating Formula):
- v: Number of votes for the movie
- m: Minimum votes required to be listed in the chart (set at the 85th percentile)
- R: Average rating of the movie
- C: Mean vote across the entire dataset
Functionality:
- Create Top 250 movies chart.
- Develop charts tailored to specific genres.
Enhance the personalization of recommendations with a Content-Based Recommendation engine. This engine calculates similarities between movies using specific criteria, suggesting movies that closely resemble a particular film enjoyed by the user.
Focus Areas:
- Movie Overviews
- Movie Cast
- Director
- Keywords
- Genre
Working Mechanism:
- Content-Based Recommendation focuses on intrinsic movie features, such as Movie Cast,Director and genres.
- Understand your preferences through the genres, favourtive cast and the director you enjoy.
- Predict and suggest movies with similar content, adding a layer of personalization based on thematic elements.
- Content-Based Recommendation: Discover movies similar to your favorites using advanced natural language processing and cosine similarity.
- Popularity-Based Recommendation: Explore trending movies based on overall popularity and user ratings.
- Data Analysis: Dive into insightful visualizations exploring the world of movies, genres, and more.
- Streamlit Web App: Explore movie recommendations interactively through our Streamlit web app. Tailor your preferences, and witness the system craft a unique movie playlist just for you.
- Python
- Pandas, NumPy, Matplotlib, Seaborn
- Natural Language Processing with NLTK
- Machine Learning with Scikit-Learn
- Streamlit for Web App Development
- Requests for HTTP Handling
Get Started:
-
Clone the repository:
-
Install dependencies:
-
Deployment:
Feel free to explore, contribute, and enhance the movie recommendation experience. Your movie night starts here!
-
Open the web browser and go to the local host1to explore the Movie Recommendation System.
- Open the Jupyter Notebook (
Movie_Recommendation_System.ipynb) to initiate the exploration and analysis of the movie dataset. - Follow the step-by-step instructions to load the movie data from (
tmdb_5000_movies.csv) and proceed with the analysis.
- Identify and select key features for the analysis, including genres, id, keywords, overview, popularity, release_date, title, vote_average, vote_count, cast, and crew.
- Clean the data, especially focusing on columns like genres, keywords, cast, and crew, which are in dictionary format.
- Utilize the Abstract Syntax Trees (
.ast) module in Python to convert dictionary literals into objects.
- Implement the calculation of all components of the weighted rating, incorporating factors like vote count, average rating, and overall popularity.
- For the recommendation system based on average, focus on specific columns: genre, popularity, release_date, vote_average, vote_count, and weighted_average.
- Arrange movies in descending order based on popularity to check for popular recommendations. 1704/recomend_movie/assets/140384850/c4c03d17-34d0-42cb-b784-e0ba5e3cefca)
- Create a new recommendation system that considers both weighted average and popularity with a 50-50 priority, forming a new column as a scorecard.
- Explore recommendations based on particular genres.
- Choose key features for the Content-Based Recommendation System, including id, title, genres, keywords, overview, cast, and director.
- Split words in the overview into individual tags and create a collection of tags from columns like genres, overview, keywords, cast, and director.
- Convert each tag of a particular movie into a set of arrays and form a matrix.
- Build a recommendation system based on the similarity of arrays by calculating the minimum distance between two pairs.
- Replace 'particular movie' with the desired movie title to tailor recommendations according to user preferences.
Explore the notebook for a detailed walkthrough of these steps and gain insights into the world of movie recommendations!
- Open the Streamlit web app interface by running the provided command in the terminal.
- The initial screen presents a clean and user-friendly interface.
- Select the recommendation approaches you would like to explore.
- Navigate to the popularity-based recommendation system.
- A new interface appears with the same heading.
- Choose the genres of your interest.
- The system will suggest 250 movies with their posters in descending order of the scorecard within the selected genres.
- Switch to the content-based recommendation system in the select box.
- Type the title of a movie, and the system will show 5 similar movie names with their posters.










