A movie recommendation system built using collaborative filtering techniques to provide personalized movie suggestions. The system analyzes user rating patterns and similarities between users to generate relevant recommendations.
- User-based collaborative filtering algorithm
- Cosine similarity for user preference matching
- Movie rating analysis and visualization
- Support for 1600+ movies and 900+ users
- Personalized recommendations based on user history
# Clone the repository
git clone https://github.com/yourusername/collaborative-recommender.git
# Change into project directory
cd collaborative-recommender
# Install required packages
pip install -r requirements.txtpandas>=1.3.0
numpy>=1.21.0
scikit-learn>=0.24.0
streamlit>=1.0.0
plotly>=5.0.0The system utilizes two main data files:
-
Movie_data.csv: Contains user ratings and interactions- User_ID
- User_Names
- Movie_ID
- Rating (1-5 scale)
- Timestamp
-
Movie_Id_Titles.csv: Movie metadata- Movie_ID
- Movie_Title
Run the Streamlit web application:
streamlit run app.pyThe interface allows you to:
- Select a user from the dropdown menu
- View rating distributions and statistics
- Get personalized movie recommendations
- Creates a user-movie interaction matrix
- Computes user similarities using cosine similarity
- Identifies most similar users for a given target user
- Aggregates highly rated movies from similar users
- Filters out previously watched movies
- Returns top-N movie recommendations
collaborative-recommender/
├── CollaborativeFiltering.ipynb # Core recommendation algorithm
├── app.py # Streamlit web interface
├── Movie_data.csv # User rating dataset
├── Movie_Id_Titles.csv # Movie information
├── requirements.txt # Package dependencies
└── README.md # Project documentation
- Number of Users: 944
- Number of Movies: 1,682
- Total Ratings: 100,003
- Matrix Sparsity: 6.3%
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.