CourseAI / ML Engineer: The Complete Course · Module 3: Classical Machine Learning · part 19 of 93
Part 19 · Module 3: Classical Machine Learning

Lesson 1: Six core models on one parcel table

27 min read·
Module 3 · Lesson 1 · About 50 minutes · Needs: pandas, what a train/test split is, and the Kestrel data (course-guide/06). Module 1's logistic regression from scratch helps but is not required.

The situation

Week 3 at Kestrel. Adaeze wants one table before anyone tunes anything: "Every model family you would consider, trained and scored the same way. Then tell me which family v1 should be." Morag adds: "And tell me why it says what it says about a parcel."

The parcel that runs through this lesson is the one lesson 3 uses too: KP0104204 (simulated), collected from Dartford on Wednesday 2 September 2026 at 18:00, next-day service, 143 stops on its route, an address quality of 0.578. It arrived late.

WHERE THIS FITS The Kestrel system this lesson SHARED SERVICES Depot scans parcels, routes Ingestion nightly batch Validation Pandera checks Data lake Parquet, DuckDB Experiments MLflow runs Training LightGBM, Optuna Online store Feast, Redis Features point in time Gates vs the champion Registry staged versions Serving API FastAPI, ONNX Consumers vans, customers Retraining trigger, budget Alerting on call Monitoring drift, Evidently Late labels a day later Orchestrator Prefect flows Versions DVC, Git CI/CD GitHub Actions Containers Docker images
This lesson works on the training step (blue): six model families fitted on the same weeks; the rest of Kestrel's system is grey for now.

The rest of this course is yours to keep

This course is bought on its own, once, and stays readable afterwards, including the parts added to it later.

Or open everything with a plan