# Ethiopia ML 3‑Month MVP → Production‑Ready Path (Weather + FX → Drought Risk)
This repository is an **end‑to‑end ML MVP** (data collection → feature engineering → model selection → tracking/registry → evaluation → monitoring → Flask deployment).
## Real data sources
- **Open‑Meteo Historical (Archive) API** (no key) for daily weather variables.
- **NASA POWER Daily API** (backup/secondary) for daily meteorology.
- **exchangerate.host** for USD→ETB FX (optional, used as *impact context*; not a physical driver).
## What it covers (your lectures)
- Classification: Logistic Regression, MLP
- Kernel methods: SVM (RBF)
- Ensembles: Random Forest, AdaBoost
- Unsupervised: KMeans/DBSCAN monthly clustering (optional)
- Production upgrades: dataset versioning manifest, top‑3 model selection, ClearML tracking/registry, monitoring scaffolding
---
# Quick start
## 1) Install
```bash
python -m venv .venv
# Windows: .venv\Scripts\activate
# Linux/Mac: source .venv/bin/activate
pip install -r requirements.txt
```
## 2) Download real data (Weather)
```bash
python scripts/download_weather.py --start 2018-01-01 --end 2025-12-31
# Optional backup source:
python scripts/download_weather_power.py --start 2018-01-01 --end 2025-12-31
```
## 3) Download FX (optional)
```bash
python scripts/download_fx.py --start 2018-01-01 --end 2025-12-31
```
## 4) Build dataset (SPI-style target + versioning manifest)
```bash
python scripts/build_dataset.py
# creates:
# data/processed/dataset_daily_ .csv
# data/processed/dataset_daily_latest.csv
# data/manifest.json
```
## 5) Preliminary model selection (pick 3 promising models)
```bash
python train/model_selection.py
# creates reports/model_screening.json
```
## 6) Train and register best model (ClearML optional)
```bash
python train/train_models.py
# creates models/*.joblib + models/meta.json
```
## 7) Evaluate spatiotemporal generalization
```bash
python train/evaluate_spatiotemporal.py
# creates reports/spatiotemporal_eval.json
```
## 8 …