A powerful and interactive course recommendation system built with Streamlit, combining both traditional machine-learning algorithms and deep-learning models to help learners discover the best courses tailored to their personal preferences.
The explosion of online education platforms has empowered millions—but it also overwhelms learners with too many choices. This project solves that problem by providing personalized course recommendations using:
- Content-based filtering
- Collaborative filtering
- Clustering
- Deep learning models
The system offers an intuitive Streamlit interface where users can select courses they’ve taken, choose a model, tune hyperparameters, train real-time, and instantly view recommendations.
- Interactive UI: Built with Streamlit + AgGrid for fast filtering and selection.
- 8 Recommendation Algorithms .
- Real-time Model Training: Train Neural Networks or KNN directly in the browser.
- Hyperparameter Tuning: Sliders for k-value, epochs, clusters, etc.
- Cold-Start Support: Automatically builds a user profile for new users.
- Embeddings-Based Models: Neural networks + regression/classification using learned embeddings.
- Cosine similarity over processed course descriptions.
- Builds a weighted user vector based on genre affinity.
- Recommends courses popular within the user's cluster.
- Dimensionality reduction for improved clustering performance.
- k-Nearest Neighbors collaborative filtering.
- Custom Keras model learning low-dimensional embeddings.
- Linear regression using NN-learned embeddings.
- Random Forest classifier using learned embeddings.
(Note: NMF model removed as per latest project update.)
Follow the steps to run the project locally:
git clone https://github.com/pradeep-mahat0/course-recommender-system.git
cd course-recommender-systempython -m venv venv
venv\Scripts\activatepython3 -m venv venv
source venv/bin/activatepip install -r requirements.txtstreamlit run recommender_app.py- Launch the app — the course dataset loads into an interactive grid.
- Select courses you’ve previously taken or liked.
- Choose a model from the sidebar.
- Tune hyperparameters using sliders.
- Train the model (only for training-based models like Neural Network).
- Click Recommend New Courses to see personalized suggestions.
├── recommender_app.py # Main Streamlit UI
├── backend.py # Model controller and logic layer
├── nn_model.py # Keras-based embedding model
├── helper.py # Utility functions for processing & clustering
├── recommend.py # Cluster recommendation logic
├── data/ # CSV datasets
│ ├── ratings.csv
│ ├── course_processed.csv
│ └── ...
└── requirements.txt
- Database Integration (PostgreSQL/MySQL) for scalable user data.
- Hybrid Filtering combining content + collaborative scores.
- Explainable Recommendations with SHAP, attention maps, or feature attributions.
- API Layer to allow mobile app or external service integration.
If you like this project, don’t forget to ⭐ the repository!