Reproducible Python implementation of explainable, imbalance-aware machine-learning models for classifying concurrent child undernutrition outcomes using Ethiopian Young Lives Cohort Study data.
# Imbalance-Aware Explainable Machine Learning for Child Undernutrition Modeling
This repository contains reproducible research code and scripts for the manuscript
"Imbalance-Aware Explainable Machine Learning for Concurrent Child Undernutrition Modeling"
(Young Lives Ethiopia). It is structured to enable end-to-end regeneration of preprocessing,
model training, evaluation, tables, and figures without shipping restricted data.
## Repository map
- **Configuration**
- `configs/` — Model, experiment, or pipeline configuration files.
- **Data**
- `data/` — Raw and processed datasets (restricted data not included).
- **Documentation**
- `docs/` — Project documentation and references.
- **Figures**
- `figures/` — Generated plots and supplementary visual assets.
- **Notebooks**
- `notebooks/` — Exploratory analysis, prototyping, and reports.
- **Scripts**
- `scripts/` — CLI utilities and one-off automation tasks.
- **Source code**
- `src/` — Core library code for data prep, modeling, and explainability.
- **Tests**
- `tests/` — Automated tests for the codebase.
- **Dependencies**
- `requirements.txt` — Python dependency list.
## Quickstart
1. Create an environment:
```bash
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
2. Add data:
- Place the dataset at `data/Baseline Data.csv` (or update `configs/default.txt`).
- The dataset should contain the outcome column and covariates described in the manuscript.
3. Run the full pipeline:
```bash
python scripts/run_pipeline.py --config configs/default.txt
```
4. Reproduce figures and tables:
```bash
python scripts/make_figures.py --config configs/default.txt
python scripts/make_tables.py --config configs/default.txt
```
## Supplementary tables (S5-S7)
Generate specific supplementary tables directly from the raw dataset:
```bash
python scripts/make_table_s5_bivariate.py --data data/young_lives_ethiopia.csv --target concurrent_conditions --out results/tables/table_s5_bivariate.csv
python scr …