EDA foundation (2,126 CTG exams, 22 features) for a multi-class fetal-health classifier — scaffolded with Cookiecutter Data Science, scaling pipeline prototyped. WIP: EDA only, classifier not yet trained.

Correlation heatmap of 22 CTG features
Cardiotocography (CTG) is the standard pre-labour fetal monitoring tool. It traces fetal heart rate and uterine contractions during the third trimester and intrapartum, and a clinician reads the trace and decides whether the fetus looks Normal, Suspect, or Pathological. Misreading a Pathological as Normal can mean a missed emergency C-section. Misreading a Normal as Pathological can mean an unnecessary intervention.
CTG interpretation has measurable inter-rater disagreement, which is exactly the kind of problem ML should be able to help with — as a second opinion, not a replacement. Done right, an ML model could surface the cases that look ambiguous and flag them for senior review, reducing the cognitive load on whoever is reading traces in the middle of the night. Done wrong, it's a lawsuit.
The Kaggle Fetal Health Classification dataset has ~2,126 CTG exams labeled Normal / Suspect / Pathological by expert obstetricians, with 22 derived features (heart-rate accelerations, decelerations, variability metrics, histogram-based summaries). It's one of the cleaner public medical datasets — small, but the features are clinically meaningful.
It is:
It isn't:
model.pkl, no inference script, no metrics on a held-out set. That's deliberate — I'd rather ship the EDA cleanly and add the model in the next iteration than half-finish both.This page is framed as WIP. The portfolio space is full of "I trained an XGBoost on Kaggle" projects with no acknowledgment of the gap between "Kaggle accuracy" and "clinical decision support." This page is the foundation; the model is the next post.
Cookiecutter Data Science is "right enough" for small ML projects. Opinionated folders for data/raw, data/interim, data/processed, data/external, plus notebooks/, models/, reports/figures/, src/, and a docs/ scaffold. It costs almost nothing upfront and pays off the moment the project grows past one notebook.
The discipline of data/raw being read-only and data/processed being everything-derived is the most important habit in applied ML — once you confuse "the original CSV from Kaggle" with "the version I cleaned last Tuesday", you've lost reproducibility. Cookiecutter forces that habit by giving you the folders before you've made the mistake.
For a project that's meant to grow into a trained classifier, the scaffold is worth more than the few minutes it costs to set up. Future me will thank current me when the scope expands and there's already a models/ folder waiting, a reports/ folder waiting, a src/ package waiting to hold the actual training code.