An open notebook with a hand-drawn scatterplot in a quiet classroom.
EDUCATION DATA / CASE STUDY 04

STUDENT
PERFORMANCE

A score can be estimated. What should we conclude from it?

A small regression study compares seven models, tests the selected pipeline against a baseline, and draws a clear boundary around what the result can say.

1,000 ROWS · 8 COLUMNSEDUCATIONAL EXERCISE

Associations in one inspected dataset. Not a student assessment or decision tool.

FOLLOW THE STUDY ↓
EDITORIAL CONCEPT · NOT A PRODUCT SCREEN
1,000ROWS
8COLUMNS
7PREDICTORS
1REGRESSION TARGET
01
A SCORE. A DIFFICULT QUESTION.

Two known scores. Five context fields. One estimate.

Can reading and writing results, alongside five background fields, help estimate a maths score? The study tests that relationship in one small dataset. It does not explain why a student performs a certain way.

NUMERIC SCORES
Reading score0–100
Writing score0–100
BACKGROUND PREDICTORS
GenderRace / ethnicityParental educationLunchTest preparation
FEATURES→
REGRESSION TARGETMaths
score
math_score · observed range 0–100
DATA CHECKS

Validated before the split.

Schema, category, missing-value, duplicate-row, and score-range checks run before training.

1,000rows
8columns
0missing values
0duplicate rows
SCHEMA MATCHVALID CATEGORIESSCORES 0–100FINITE VALUES
02
FROM INPUTS TO A MODEL

Preparation lives inside the model pipeline.

Each training fold learns its own preprocessing. The same pipeline carries those transformations into the model, keeping comparison and inference consistent.

NUMERIC · 2 FIELDS
Median imputation↓Standard scaling

Reading score · Writing score

CATEGORICAL · 5 FIELDS
Most-frequent imputation↓One-hot encoding↓Scale without centering

Unseen categories are ignored by the encoder.

TRANSFORMED FEATURES→REGRESSOR

Numeric and categorical data are prepared inside the modelling pipeline.

02
SEVEN CANDIDATES · ONE SELECTION

Same training rows. Seven model paths.

Three-fold shuffled cross-validation (seed 42) compares candidates using training data only. Linear Regression scores highest on mean validation R², so it is selected for the held-out evaluation.

Blank translucent cards connected by several paths, with one pale blue linear path highlighted; editorial metaphor for comparing model families.
EDITORIAL CONCEPT · MODEL PATHS ARE METAPHORICAL, SCORES BELOW ARE MEASURED
MODEL FAMILYMEAN VALIDATION R² · 3 FOLDSSELECTION
01Linear Regression0.8678SELECTED
02Gradient Boosting0.8494COMPARED
03CatBoost0.8471COMPARED
04Random Forest0.8275COMPARED
05XGBoost0.8203COMPARED
06AdaBoost0.8157COMPARED
07Decision Tree0.6868COMPARED
SELECTED MODEL
Linear Regression

The simplest model scored highest on the selection metric. Complexity did not improve this validation result.

0.8678MEAN CV R²0.0097FOLD STD DEV

R² is a regression metric, not “accuracy.” Cross-validation scores selected the model; they are not independent performance estimates.

02
FROM ANALYSIS TO A LOCAL DEMO

Input fields to one saved pipeline.

The Flask form validates the selected categories and 0–100 score inputs, loads the fitted preprocessing-plus-model pipeline, then returns an estimated maths score.

01Input form5 categories
Reading + writing
→
02ValidateAllowed values
Scores 0–100
→
03Saved fitted pipelinePreprocessing
+ Linear Regression
→
04Estimated maths scoreLocal response
Not a grade
CONCEPTUAL FLOW

No repository screenshots were found. This diagram explains the implemented flow; it is not a screenshot or a live application.

Flask form → server-side validation → saved pipeline → estimated score
02
THE REPRODUCIBLE WORKFLOW

A path from CSV to local inference.

Cross-validation selects the candidate using training rows. The held-out split is used afterward for one evaluation, then the selected pipeline is saved for the local demo.

01Bundled CSV1,000 rows · 8 columns
02Validate schema & valuesRanges · categories · missing · duplicates
03Split once800 train · 200 test · seed 42
043-fold CVTraining rows only · shuffled · seed 42
05Prepare each foldImpute · scale · one-hot encode
06Compare 7 regressorsSelect highest mean validation R²
07Choose Linear RegressionMean CV R² 0.8678 · std 0.0097
08Refit on training dataPreprocessing and estimator saved together
09Evaluate held-out testCompare with training-mean baseline
10Load saved pipelineFlask form validates predictor inputs
11Estimate maths scoreLocal prediction · not an assessment
03
WHAT DID THE TEST SET SHOW?

Compare the model with a simple baseline.

After selection, the pipeline was refit on all 800 training rows and evaluated once on the 200-row test split. It beats a training-mean baseline on this already-inspected random split.

REGRESSION METRICLINEAR REGRESSIONTRAINING-MEAN BASELINE
R²Higher is better0.8804−0.0170
MAELower is better4.2148 points12.3399 points
RMSELower is better5.3940 points15.7316 points
PREDICTED VS OBSERVED

A conceptual view of a regression fit.

This schematic shows the idea of predictions tracking observed values. It contains no measured sample points.

SCHEMATIC · NOT MEASURED DATA
OBSERVED MATHS SCOREPREDICTED SCORE →

The original project already inspected this random test split. This is not a new external validation set.

04
WHERE THE RESULT STOPS

Useful learning exercise. Not a student decision tool.

The metrics describe this dataset and an already-inspected random split. They do not establish fairness, causality, or suitability for a real educational setting.

FAIRNESS REVIEW REQUIREDSubgroup error analysis and feature ablation would be required before considering real educational use.

Gender and ethnicity are predictors in this model, and no fairness analysis has been completed.

  1. 01

    Small, single-dataset exercise.

  2. 02

    The random test split was already inspected in the original project.

  3. 03

    No external or temporal validation.

  4. 04

    Reading and writing scores are already known at prediction time; this is not early warning.

  5. 05

    Gender and ethnicity are included as predictors.

  6. 06

    No fairness analysis has been completed.

  7. 07

    Dataset provenance and redistribution licence are unverified.

  8. 08

    The app runs on Flask’s local development server.

  9. 09

    No production deployment or monitoring has been verified.

  10. 10

    Relationships are not causal claims.

RESPONSIBLE USE

Do not use these estimates for admissions, grading, interventions, or other decisions about real students. The model reports associations; it does not establish causes.

04
TOOLS & REPRODUCIBILITY

The tools behind the workflow.

Training, inference, notebooks, and tests use the tools documented in the project.

DATA & MODELLING
PythonPandasNumPyscikit-learnXGBoostCatBoost
LOCAL APP
FlaskJinjaHTML
EXPLORATION
JupyterMatplotlibSeaborn
QUALITY
unittest
STUDENT PERFORMANCE · REGRESSION STUDY

Measure carefully.
Make modest claims.

Student Performance is a tabular regression project covering data validation, preprocessing, cross-validated model selection, held-out evaluation, and local Flask inference.

Linear Regression outperformed more complex candidates on validation R², showing that added model complexity did not improve this dataset’s selection result.

This is an educational modelling exercise, not a production system for real student decisions.

1,000ROWS
7MODEL FAMILIES
0.8678MEAN CV R²
0.8804HELD-OUT R²
4.2148MAE · POINTS
5.3940RMSE · POINTS
0MISSING VALUES
EDUCATIONAL REGRESSION · LOCAL DEVELOPMENT APP · NO CAUSAL CLAIMS© 2026 MOHAN RAMAMURTHY