This project aims to predict students' exam performance based on various factors such as gender, parental education, and preparation courses. The pipeline includes:
- Data preprocessing and exploratory data analysis (EDA).
- Model training and hyperparameter tuning.
- Deployment of the trained model for inference.
The project provides an interactive web interface for users to input data and receive predictions about student performance.
- Programming Language: Python
- Libraries: pandas, numpy, scikit-learn, Flask, dill
- Model Evaluation: R2 Score, Hyperparameter Tuning with GridSearchCV
- Deployment: Elastic Beanstalk configuration for deployment
- End-to-End Pipeline: Covers data collection, preprocessing, model training, evaluation, and deployment.
- Hyperparameter Tuning: Uses
GridSearchCV
for optimizing model performance. - Custom Exception Handling: Implements a robust error-handling framework for debugging.
- Interactive Web UI: A user-friendly interface built with Flask for making predictions.
- Logging and Monitoring: Logs critical events for better traceability and debugging.
Here’s a brief overview of the project structure:
.
├── src
│ ├── utils.py # Utility functions (save/load objects, evaluate models)
│ ├── logger.py # Logging setup
│ ├── exception.py # Custom exceptions
│ ├── pipeline
│ ├── predict_pipeline.py # Prediction pipeline for input data
│ ├── train_pipeline.py # Training pipeline (not shown in file list)
├── notebook
│ ├── student_performace_EDA.ipynb # Exploratory data analysis notebook
│ ├── data
│ ├── stud.csv # Raw dataset
├── templates
│ ├── home.html # Web interface for predictions
│ ├── index.html # Placeholder page for training status
├── app.py # Flask application entry point
├── requirements.txt # Python dependencies
Follow these steps to set up the project locally:
-
Clone the repository:
git clone https://github.com/pycoder49/first_e2eMLproject.git cd first_e2eMLproject
-
Install dependencies:
pip install -r requirements.txt
-
Run the Flask application:
python app.py
-
Access the web application at
http://127.0.0.1:5000
.
Once the Flask application is running, follow these steps:
- Input student details such as gender, ethnicity, parental education, etc., through the web form.
- Click the "Predict" button to generate predictions for student performance in exams.