An end-to-end Machine Learning web application that predicts a student’s Maths score based on demographic information, academic background, and preparation level.
The project demonstrates how a trained ML model can be deployed as a production-ready Flask web application.
🔗 Deployed Application:
https://student-performance-indicator-0w7h.onrender.com
This project is designed to showcase:
- Complete Machine Learning lifecycle
- Modular coding practices
- Model serialization and reuse
- Web-based inference using Flask
- Clean and interactive UI
The application takes user inputs through a web form and returns a real-time prediction using a trained regression model.
Given a student’s:
- Gender
- Race / Ethnicity
- Parental level of education
- Lunch type
- Test preparation status
- Reading score
- Writing score
Predict the Maths score using a Machine Learning model.
├── ./ │ ├── app.py │ ├── README.md │ ├── requirements.txt │ ├── setup.py │ ├── tree.py │ ├── logs/ │ │ ├── 01_20_2026_22_47_14.log │ ├── ML_Project.egg-info/ │ │ ├── dependency_links.txt │ │ ├── PKG-INFO │ │ ├── requires.txt │ │ ├── SOURCES.txt │ │ ├── top_level.txt │ ├── Notebook/ │ │ ├── EDA.ipynb │ │ ├── model_training.ipynb │ │ ├── data/ │ │ │ ├── stud.csv │ ├── src/ │ │ ├── exception.py │ │ ├── logger.py │ │ ├── utils.py │ │ ├── init.py │ │ ├── components/ │ │ │ ├── data_ingestion.py │ │ │ ├── data_transformation.py │ │ │ ├── model_trainer.py │ │ │ ├── init.py │ │ ├── pipeline/ │ │ │ ├── predict_pipeline.py │ │ │ ├── train_pipeline.py │ │ │ ├── init.py │ ├── templates/ │ │ ├── home.html │ │ ├── index.html
- Python
- NumPy
- Pandas
- Scikit-learn
- Flask
- Gunicorn
- Linear Regression
- Data Preprocessing Pipelines
- OneHotEncoder
- StandardScaler
- ColumnTransformer
- Render (Cloud Hosting)
- Data Ingestion
- Raw dataset loading
- Data Transformation
- Categorical encoding
- Numerical scaling
- Model Training
- Multiple regression models tested
- Best model selected using R² score
- Serialization
- Model and preprocessor saved using Pickle
- Inference
- Same preprocessor reused during prediction to ensure consistency
- User lands on a Landing Page (
/) - Redirects to the Prediction Page (
/predictdata) - User fills the form
- Flask backend:
- Converts inputs to DataFrame
- Applies preprocessing
- Runs model inference
- Predicted Maths score is displayed on the UI