- Ammar Alzureiqi - [email protected]
- Ahmed Elfarra - [email protected]
Website link: Movie Recommender
This project involves creating a movie recommender website using Python and Streamlit. The recommender system is divided into two main systems:
- System 1 - Genre-based Recommender
- System 2 - Collaborative Filtering Recommender
The genre-based recommender system suggests movies based on the selected genre. The top movies in each genre are determined based on a weighted average rating.
Where:
- mean_ratings is the mean of the ratings for the movie.
- count is the number of reviews for this movie.
- median is the median number of reviews for movies in this genre.
This formula helps in dealing with movies that receive only a few high-point reviews.
- Data Loading: Movies and ratings data are loaded from
.dat
files. - Data Preprocessing: The data is merged and aggregated to compute mean ratings, counts, and median counts.
- Weighted Ratings Calculation: The weighted average ratings are computed for each movie.
- Genre Selection: Users can select a genre from a predefined list.
- Display Top Movies: The top 10 movies in the selected genre are displayed with their images and ratings.
The collaborative filtering system suggests movies based on user ratings. Users rate some movies, and recommendations are generated using Item-Based Collaborative Filtering (IBCF).
- Data Loading: Movies data is loaded.
- User Rating Collection: Users rate a set of displayed movies.
- Generate Recommendations: Using the user's ratings, the system generates a list of recommended movies.
- Display Recommendations: Recommended movies are displayed with their titles and genres.
The Movie Recommender Website provides two different recommendation systems:
- Genre-based Recommender: Suggests movies based on selected genres using weighted average ratings.
- Collaborative Filtering Recommender: Provides personalized movie recommendations based on user ratings.
Both systems leverage Streamlit for an interactive and user-friendly web interface, enabling users to easily discover new movies based on their preferences and ratings.