This project is a content-based movie recommendation system built with Python, using Streamlit for the user interface. It recommends movies to users based on similarities in their content, such as genre, director, cast, and description. The application is containerized using Docker and is ready for deployment.
The project follows a standard machine learning workflow, from data collection to deployment. It involves:
- Web Scraping: Gathering movie data from IMDb.
- Data Preprocessing: Cleaning and preparing the scraped data.
- Model Building: Creating a content-based recommendation engine using machine learning techniques.
- User Interface: Developing a web application with Streamlit.
- Deployment: Packaging the application for easy deployment with Docker and Kubernetes.
- 🎯 Content-Based Filtering: Recommends movies by analyzing and matching the attributes of a movie a user likes.
- 🖥️ Interactive Web App: Built with Streamlit, users can select a movie and instantly get recommendations.
- 📦 Scalable Architecture: Dockerized and ready for deployment on cloud platforms or Kubernetes clusters.
- Python → Core programming language
- Pandas → Data manipulation & analysis
- Scikit-learn → TF-IDF vectorization + cosine similarity
- Streamlit → Building the interactive user interface
- Requests & BeautifulSoup → Web scraping IMDb movie data
- Docker → Containerization for consistent deployments
- Kubernetes (YAML) → Deployment & service management
- Clone the repository
git clone https://github.com/CherrySeasons/MovieRecommendationSystem.git
cd https://github.com/CherrySeasons/MovieRecommendationSystem.git- Install dependencies
pip install -r requirements.txt- Run the Streamlit app
streamlit run app.py➡ The app will automatically open in your default browser.
Build the Docker image:
docker build -t movierecommendation .Run the Docker container:
docker run -p 8501:8501 movierecommendationUse the provided YAML files to deploy on a Kubernetes cluster:
kubectl apply -f deployment.yaml
kubectl apply -f service.yamldeployment.yaml→ Defines replicas and Docker image.service.yaml→ Exposes the application via a LoadBalancer.
├── content_filtering_engine.py # Content-based recommendation logic
├── movie_data_scraper.py # Web scraping IMDb movies
├── main_app.py # Streamlit web application
├── requirements.txt # Python dependencies
├── Dockerfile # Docker image build file
├── k8s_deployment.yaml # Kubernetes deployment config
├── k8s_service.yaml # Kubernetes service config
├── movie_dataset.xlsx # Movie dataset
├── movies_index.pkl # Preprocessed movie list
├── similarity_matrix.pkl # Similarity model
├── README.md # Project documentation
└── .gitignore # Ignored files & folders
- Teja Sai Eswar Reddy Singa Reddy