AI-powered flood risk prediction for Nyando Basin, Kenya. XGBoost + SHAP + FastAPI + React. AUC-ROC 0.9717. 100% open data — Kenya DPA 2019 compliant.
# 🌊 Nyando Basin Flood Risk Prediction System
**An open-source, AI-powered flood early warning system for Nyando River Basin, Kisumu County, Kenya.**
Ward-level flood susceptibility mapping at 100m resolution with 72-hour prediction lead time.
> Trained on **real Google Earth Engine satellite data** — NASA NASADEM, CHIRPS v2, Sentinel-1 SAR, SoilGrids, HydroSHEDS, ESA WorldCover.
---
## 🔴 Live Deployments
| Service | URL | Status |
|---|---|---|
| **Prediction API** |
nyando-flood-api.onrender.c… | ✅ Live — Python on Render |
| **Health Check** |
nyando-flood-api.onrender.c… | ✅ `model_loaded: true` |
| **Donor Dashboard** | nyando-flood-ai.vercel.app | ✅ Live — React + Vite on Vercel |
> ⚠️ The API runs on Render's free tier — first request after idle may take 30–60s to cold-start. Subsequent requests return in Model: **GradientBoostingClassifier** trained on 2,308 real GEE satellite observations.
> Features: 6 real satellite variables. Labels: physics-calibrated with 2 Sentinel-1 SAR-confirmed flood anchors.
> Evaluation: stratified 80/20 split + 5-fold spatial cross-validation.
| Metric | Score | Interpretation |
|---|---|---|
| **AUC-ROC** | **0.9717** | Near-perfect flood/no-flood discrimination |
| **F1-Score** | **0.9022** | High balance — minimises false alarms and missed floods |
| **Precision** | 0.8830 | 88.3% of HIGH/CRITICAL alerts are genuine flood events |
| **Recall** | 0.9222 | 92.2% of real flood zones correctly identified |
| **Brier Score** | 0.0736 | Well-calibrated probability estimates |
| **CV AUC (5-fold)** | 0.9727 ± 0.0040 | Stable — generalises well across spatial folds |
| **Training points** | 2,308 real GEE | Real satellite feature values from Nyando Basin |
| **Resolution** | 100m grid | Ward-level mapping |
| **CI Tests** | 41 passing ✅ | GitHub Actions — all green |
### Model Comparison
| Model | AUC-ROC | F1 | Notes |
|---|---|---|---|
| Logistic Regression | 0.82 | 0.74 | Baseline |
| Random F …