How grashanks/mlproject works
This is an end-to-end student math-score regression project: training data is ingested, transformed, and used to select and save a model; a Flask form accepts student attributes and displays a prediction. The sampled training code has an apparent blocker: ModelTrainer calls evaluate_models without the required param argument. Transformation also saves proprocessor.pkl, while prediction loads preprocessor.pkl. Training and inference may therefore not work as written. The training flow is connected as invoked by data_ingestion.py's main block; unsampled details are omitted.
Main entry points: app.py Flask routes · data_ingestion.py Data ingestion · utils.py Artifact utilities · data_transformation.py Feature transformation
Components 16
Web inference
- Flask routes
app.py - Input forms
templates/home.html - Landing page
templates/index.html
Model training
- Data ingestion
src/components/data_ingestion.py - Feature transformation
src/components/data_transformation.py - Model selection
src/components/model_trainer.py
Prediction runtime
- Input dataframe
src/pipeline/predict_pipeline.py - Prediction pipeline
src/pipeline/predict_pipeline.py - Artifact utilities
src/utils.py
Data and artifacts
- Student dataset
notebook/data/stud.csv - Dataset splits
artifacts/train.csv - Raw dataset copy
artifacts/data.csv - Preprocessor artifact
artifacts/preprocessor.pkl - Trained model
artifacts/model.pkl
Other components
- Web user
- Training operator
Connections 21
- Web user → Flask routes: submits form
- Flask routes → Landing page: renders page
- Flask routes → Input forms: renders form
- Input forms → Web user: collects inputs
- Training operator → Data ingestion: starts training
- Data ingestion → Student dataset: reads dataset
- Data ingestion → Raw dataset copy: writes copy
- Data ingestion → Dataset splits: writes splits
- Data ingestion → Feature transformation: passes split paths
- Feature transformation → Dataset splits: reads splits
- Feature transformation → Preprocessor artifact: saves transformer
- Data ingestion → Model selection: passes transformed arrays
- Model selection → Artifact utilities: evaluates and saves
- Artifact utilities → Trained model: writes model
- Flask routes → Input dataframe: creates input data
- Input dataframe → Flask routes: returns dataframe
- Flask routes → Prediction pipeline: requests prediction
- Prediction pipeline → Artifact utilities: loads artifacts
- Artifact utilities → Trained model: reads model
- Artifact utilities → Preprocessor artifact: reads transformer
- Flask routes → Input forms: renders result