An end-to-end Machine Learning project that predicts students' math scores based on various socio-economic and academic factors.
The project demonstrates the complete ML lifecycle – from data collection, EDA, feature engineering, model selection, web deployment, and containerization.
- Python, Pandas, NumPy, Scikit-learn
- Flask (backend web framework)
- HTML, CSS, Simplified JavaScript (frontend UI)
- CatBoostRegressor, AdaBoostRegressor, RandomForestRegressor, LinearRegression, KNeighborsRegressor, DecisionTreeRegressor, XGBRegressor
- Evaluation Metrics:
r2_score - GitHub Actions (CI/CD automation)
- Azure Web App & AWS Elastic Beanstalk (cloud deployment)
- Docker (containerization)
├── .github/workflows # GitHub Actions CI/CD
├── data # Dataset
├── notebooks # EDA & experiments
├── src # ML pipeline (data ingestion, transformation, trainer)
├── templates # HTML pages (home, form, result)
├── static # CSS, JS files
├── app.py # Flask entrypoint
├── Dockerfile # For containerization
├── requirements.txt # Python dependencies
└── README.md # Project documentation
- Objective: Predict students’ math scores based on features such as:
- Gender
- Ethnicity
- Parental level of education
- Lunch type
- Test preparation course
- Reading score
- Writing score
- Dataset Source: Kaggle - Students Performance in Exams
- Size: 1000 rows × 8 columns
| gender | race_ethnicity | parental_level_of_education | lunch | test_preparation_course | reading_score | writing_score | math_score |
|---|---|---|---|---|---|---|---|
| female | group B | bachelor's degree | standard | none | 72 | 74 | 69 |
| female | group C | some college | standard | completed | 90 | 88 | 95 |
| male | group A | associate's degree | free/reduced | none | 57 | 44 | 49 |
- Missing value checks
- Outlier detection
- Distribution of categorical features
- Correlation heatmap
- Encoding categorical variables
- Normalization where required
- Train-test split
- Trained multiple ML models:
- CatBoostRegressor
- AdaBoostRegressor
- RandomForestRegressor
- Linear Regression
- DecisionTreeRegressor
- KNeighborsRegressor
- XGBRegressor
- Model selection based on highest
r2_score.
- Flask Web App with:
- Home Page
- Prediction Form
- Result Page
- GitHub Actions CI/CD pipeline for automated deployment
- Deployment Targets:
- Dockerized container for portability
Build and run locally using Docker:
# Build image
docker build -t student-performance .
# Run container
docker run -p 5000:5000 student-performance- Linting, testing, and deployment automated
- Push to main branch → deploys app to Azure/AWS
- The best performing model was chosen based on r2_score.
- Achieved strong predictive accuracy for math scores using socio-academic features.
🔹 Home: Click Here
🔹 Form: Click Here
🔹 Result: Click Here
- Full-cycle ML project workflow
- Model comparison and selection
- Flask web development
- CI/CD deployment to cloud (Azure & AWS)
- Containerization with Docker
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under the MIT License.
Mubarak Adisa
- 🎓 Civil Engineering + Computer Science (Data Science & AI Focus)
- 🔗 GitHub: AdMub
- 💼 LinkedIn: Mubarak Adisa