
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.
Associations in one inspected dataset. Not a student assessment or decision tool.
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.
scoremath_score · observed range 0–100
Validated before the split.
Schema, category, missing-value, duplicate-row, and score-range checks run before training.
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.
Reading score · Writing score
Unseen categories are ignored by the encoder.
Numeric and categorical data are prepared inside the modelling pipeline.
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.

The simplest model scored highest on the selection metric. Complexity did not improve this validation result.
R² is a regression metric, not “accuracy.” Cross-validation scores selected the model; they are not independent performance estimates.
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.
Reading + writing
Scores 0–100
+ Linear Regression
Not a grade
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 scoreA 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.
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.
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 DATAThe original project already inspected this random test split. This is not a new external validation set.
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.
Gender and ethnicity are predictors in this model, and no fairness analysis has been completed.
- 01
Small, single-dataset exercise.
- 02
The random test split was already inspected in the original project.
- 03
No external or temporal validation.
- 04
Reading and writing scores are already known at prediction time; this is not early warning.
- 05
Gender and ethnicity are included as predictors.
- 06
No fairness analysis has been completed.
- 07
Dataset provenance and redistribution licence are unverified.
- 08
The app runs on Flask’s local development server.
- 09
No production deployment or monitoring has been verified.
- 10
Relationships are not causal claims.
Do not use these estimates for admissions, grading, interventions, or other decisions about real students. The model reports associations; it does not establish causes.
The tools behind the workflow.
Training, inference, notebooks, and tests use the tools documented in the project.
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.