Preface
Kaggle ML Learning is where I ran the full competition loop for the first time: load Iowa house data, pick a lean feature set, measure with a holdout, refit on all labels, predict the test file, ship submission.csv.
It started as the Kaggle Learn Machine Learning Competitions exercise and lives on as a personal archive of that first end-to-end submit.
The problem
Predict SalePrice for homes in the Home Data for ML Course competition. Classic tabular regression: many columns, a public leaderboard, and an easy trap — treating training error as if it were validation.
The goal for this exercise was not a fancy stack. It was discipline: same feature schema on train and test, a real holdout score before submit, then a full-data refit for the CSV Kaggle expects.
Results
| Metric | Value | Meaning |
|---|---|---|
| Holdout MAE | ~21,857 | Fit on a train split, scored on unseen validation rows |
| Train MAE (full fit) | ~8,300 | Scored on data it just saw — optimistic, not a validation claim |
| Output | submission.csv | Id + SalePrice for the competition test set |
The gap between those MAEs is the lesson: a good programmer trusts the holdout, not the flattering number.

Folder structure
Intentionally small — one exercise folder, one notebook, room to grow.
Under the hood
Two snippets that matter more than the algorithm choice: measure before you submit, and keep the feature contract identical on test.
Holdout first — then refit for the leaderboard
Same columns on test — competition CSV shape
Small details, strong habit: one features list, random_state for reproducibility, and a submission frame that matches the competition contract exactly.
Tech stack
Open source & links
Next stops on this track: missing values, categoricals, and a stronger booster baseline — still with the same holdout-before-submit muscle memory.


