Production Case — The Income Model, Packaged to Monitored
P13.cases.01 · Audience: guest, it-ml, language-pro · Prerequisites: Packaging & deployment, Monitoring & drift, Applied Case — The Honest Tabular Model, End to End
The P13 tracks teach each production stage on its own; a case picks up one real artefact and carries it through all of them, in order. This case takes the fitted income model from the P5 tabular case — a scikit-learn Pipeline that predicts whether a census respondent earns more than $50K — and runs it package → serve → monitor, ending in a graded Project on the full 32,561-row census table.
The P5 case-01 finale produced a fitted scikit-learn Pipeline (impute + one-hot + scale inside, logistic regression) and a model card. That artefact — not a learner submission — is the stable hand-off this case consumes; it predicts 1 = >50K from the 14 raw census columns.
| Property | Value |
|---|---|
| Model | ColumnTransformer + LogisticRegression, one Pipeline |
| Held-out accuracy / F1 / ROC-AUC | 0.856 / 0.673 / 0.908 |
| Positive share | ~24% (imbalanced — F1/ROC-AUC are the honest headline) |
| Data | uci-adult@1, sha256-pinned in the registry |
ⓘ Concept: A case carries an artefact across pillars
Ask the mentor about this module
Ask a question about this content. The mentor explains and grounds its answer in what you are studying; asking is recorded as a learning signal, not a grade.
🎓 Practice ladder
4 graded rungs · ~80 minRun the lifecycle yourself: package a fitted model with a checksum, batch-score a reloaded artefact, detect drift and decide — then the graded Project threads all three on the real income model in the kernel (hidden tests + design rubric).
Rung 1 — package a fitted model with a checksum
Loading exercise…
Rung 2 — batch-score the served model
Loading exercise…
Rung 3 — detect drift and decide (senior)
Loading exercise…
Rung 4 — Project: package, serve and monitor the income model (kernel)
Loading exercise…
⚡ Interview Ref — the quick-scan Reference face
- A case carries an artefact across pillars — P5's income model, run package → serve → monitor. The artefact (fitted Pipeline + model card), not a learner submission, is the stable hand-off.
- Package = serialise (
joblib) + a sha256 manifest; verification recomputes the hash on reload. A model without a checksum is one you can't prove you shipped. - Serve = reload from disk (never the in-memory object) + batch-score; batching is a throughput choice that must never change the answer (
batched == all-at-once). - Monitor = PSI on the served model's output distribution vs a slice; < 0.1 stable · 0.1–0.2 monitor · ≥ 0.2 retrain. The part-time slice trips it (~0.47).
- The Project grades the whole lifecycle in the kernel: manifest checksum matches the bytes, serving reloads and clears the reference bands (0.856 / 0.673 / 0.908), and the drift flag fires — plus a design-rubric review.
📚 Go Further
Where the pieces of this case lead.
| Type | Resource |
|---|---|
| In-app | P5.applied-cases.01 — the case that produced the fitted income model + card |
| In-app | P13.ml-lifecycle.02 — Packaging & deployment (serialise, manifest, reproduce) |
| In-app | P13.operations.01 / .02 — Serving & scaling · Monitoring & drift |
| Docs | joblib persistence; scikit-learn model persistence & security notes; Population Stability Index |
Try it yourself
A scratch console for this page's ideas — ungraded, nothing you run here is recorded.
Scratch console
A scratch console with the scientific stack (pandas, numpy, scikit-learn). Runs on the server — no network, resource-limited and measured.
Output appears here.
Where next?
Later in Production Cases
Go up a level