Skip to content
Portfolio artifact — training vs inference
Churn tabular ML
Customer churn scoring API
End-to-end tabular ML: stratified split, model comparison (ROC-AUC winner), F1-tuned threshold export, single joblib pipeline for serving, plus FastAPI inference and pytest coverage.
Portfolio narrative only. Full scorer UI: Open scoring demo (API) on churn-api.
Python
scikit-learn
FastAPI
Docker
Limitations & scope
- Demonstration training uses the public Telco Customer Churn dataset; useful scores on your accounts require retraining and validation on your own labeled data.
- The HTTP API exposes POST /predict with one JSON record per request. There is no server-side CSV upload or batch queue in this codebase.
- Risk bands (high / medium / low) use fixed probability cutoffs for UI grouping; the binary churn label uses a threshold read from training outputs (see metrics).
- The published Docker image is inference-only: you mount a trained joblib artifact plus metric files from the training pipeline (see README).
- Risk bands do not encode business cost matrices or uplift models.
Hands-on demo & depth
The full interactive page (jump nav, hold-out metrics when available, key findings, chart placeholder, predict form) is served at Open scoring demo (API) — same UI kit as the legacy Vercel bundle, without duplicating it here.
GitHub has training code, notebooks, and Docker layout.