A Machine Learning-powered web application that recommends YouTube educational videos based on student quiz performance.
Input: Student quiz results
Output: Personalized YouTube video recommendations for weak topics
- 🤖 5 ML Models trained to predict student mastery levels
- 📊 Skill Analysis showing mastered, learning, and struggling areas
- 🎬 Video Recommendations matched to weak skills
- 📈 Visual Analytics dashboard
- 🌐 Web Interface built with Streamlit
study-resource-recommender/
├── app.py # Streamlit web application
├── recommender.py # Recommendation engine module
├── requirements.txt # Python dependencies
├── README.md # This file
│
├── data/
│ ├── student_data_for_app.csv # Student performance data
│ └── skill_video_mapping.csv # Skill to video mappings
│
├── models/
│ ├── recommender_package.pkl # All models bundled
│ ├── best_model.pkl # Best performing model
│ ├── scaler.pkl # Feature scaler
│ ├── label_encoder.pkl # Label encoder
│ └── feature_config.pkl # Feature configuration
│
└── notebooks/
├── Phase1_Data_Collection.ipynb
├── Phase2_ML_Models.ipynb
└── Phase3_Recommendation_Engine.ipynb
- Clone the repository
git clone https://github.com/yourusername/study-resource-recommender.git
cd study-resource-recommender- Install dependencies
pip install -r requirements.txt- Run the app
streamlit run app.py- Source: ASSISTments Data
- Size: 346,860 interactions, 4,217 students, 123 skills
- Features: Student ID, Problem ID, Skill Name, Correctness, Hints, Response Time
- Source: Kaggle
- Content: Educational videos with titles, views, likes, duration
Both datasets are connected through SKILL/TOPIC matching:
ASSISTments skill: "Adding Fractions" → Khan Academy video: "Adding Fractions Tutorial"
| Model | Type | Purpose |
|---|---|---|
| Random Forest | Ensemble | Predict mastery level |
| XGBoost | Gradient Boosting | Predict mastery level |
| Logistic Regression | Linear | Baseline model |
| KNN | Instance-based | Find similar students |
| Neural Network (MLP) | Deep Learning | Complex patterns |
| Feature | Description |
|---|---|
| accuracy | % correct answers |
| total_attempts | Total problems attempted |
| avg_hint_ratio | Average hints used / available |
| avg_response_time | Average time per problem |
| efficiency_score | Correct answers / hints used |
| struggle_score | Combined difficulty indicator |
mastery_level:
- needs_help: Struggling (accuracy < 60%)
- learning: Progressing (60% ≤ accuracy < 80%)
- mastered: Proficient (accuracy ≥ 80%)
- Push code to GitHub
- Go to share.streamlit.io
- Connect your GitHub repo
- Deploy!
- Create a new Space on HuggingFace
- Select "Streamlit" as the SDK
- Upload your files
- Deploy!
streamlit run app.py[Add screenshots of your app here]
Eman-Omar-Yehia-Abdelmawla Nile University ML project
This project is for educational purposes.
- ASSISTments for the student performance dataset
- Khan Academy for educational content
- Streamlit for the web framework