Welcome to the Movie Recommendation System project! This repository contains the code for a Data Science project focused on building a movie recommendation system using data analysis and visualization techniques.
The primary objective of this project is to develop a movie recommendation system that suggests relevant movies to users based on their preferred movie input. The system leverages robust and extensive datasets collected from three reliable sources—IMDB, MovieLens, and TMDB—to ensure the recommendations are both accurate and reflective of real-world preferences.
A key strength of this system lies in the trustworthiness and volume of the data, which plays a crucial role in generating meaningful and practical movie suggestions. In addition to recommendation functionality, the project includes an interactive Python-based UI, enabling users to seamlessly explore, filter, and engage with the movie dataset.
To run the project, please review the key files listed below.
The datasets used in this project are obtained from publicly available and trustworthy sources. Each dataset adheres to its respective licensing agreements, as detailed below:
-
IMDB Dataset (by Genre)
- Source: Kaggle / IMDB
- License: Licensed under CC BY-NC-SA 4.0
-
MovieLens Dataset
- Source: GroupLens Research
- License: Licensed under CC BY 4.0, allowing reuse with proper attribution.
-
TMDB 2023 Dataset
- Source: Kaggle / TMDB
- License: Licensed under Open Data Commons Attribution License (ODC-By) v1.0
All datasets are used solely for academic purposes and have not been redistributed or modified beyond the scope of analysis within this project.
-
.ipynbNotebooks – Contains all backend code including data sourcing, model training, and model evaluation. -
Scripts/data_splits/– Located in the Google Drive link under the Data Files section. This folder stores the data splits used during model training. -
Scripts/models/– Includes all trained models used in the project. Also available in the Google Drive link or can be regenerated using the guide under Running the Project. -
Images/– Contains graphs generated during analysis. Saved for visual reference. -
Report/– Includes milestone reports such as "Milestone 1.pdf", which details the datasets and project scope. -
Data/– Includes the data files used for the project. (Note: Large files are not included in this repository due to size constraints.) -
m2_plots/andfigures/– Contain plots generated during execution of the notebooks.
Due to file size limitations, some datasets are hosted externally. You can access them using the following links:
⚠️ It is recommended to set up a Conda environment and install the required dependencies before starting.
Launch the Jupyter notebooks using Anaconda Navigator or the terminal.
-
Run
Milestone1.ipynb
Loads and preprocesses the data, saving it in normalized format in the/Data/directory. -
Run
Milestone2.ipynb
Trains four models: Linear Regression, Logistic Regression, K-Nearest Neighbors, and XGBoost. Saves models in themodels/folder. -
Run
Milestone2_v2.ipynb
Trains three additional models: KMeans, KNN, and HDBScan. These models and their respective features/labels are stored in nested directories insidemodels/. -
Run
Milestone3.ipynb
Tests and evaluates performance of all six distinct models (Linear Regresion was discarded and not tested on test data due to it's high MSE score insights). -
Launch the Web UI
Execute the following command in your terminal:streamlit run dashboard.py
This will open the dashboard in your default web browser.
Make sure the following Python libraries are installed:
-
pandas -
numpy -
matplotlib -
sqlite -
seaborn -
scikit-learn -
plotly -
hdbscan -
streamlit
Install via pip:
pip install pandas numpy matplotlib seaborn scikit-learn plotly hdbscan streamlit🔍 If additional package errors occur, install the missing packages before rerunning the notebooks or app.
Shows some general insights using plots for different features
User can play with entire dataset using this tab
Data Scientists can use this tab to view the different cluster groupings
User can choose a movie which they like and they will get the recommendation using KNN.
-
Download the dataset using the provided links.
-
Place dataset files in the
/Data/folder. -
Run the notebooks in milestone order.
-
The analysis will generate and save plots in the
/Images/directory.



