
AI-powered flood early warning for Nyando River Basin, Kisumu County, Kenya. Ward-level susceptibility mapping trained on real Google Earth Engine satellite data.
| Metric | Score | |---|---| | AUC-ROC | 0.9717 | | F1-Score | 0.9022 | | Precision | 0.8830 | | Recall | 0.9222 | | Brier Score | 0.0736 | | CV AUC (5-fold) | 0.9727 Β± 0.0040 |
Model: GradientBoostingClassifier Β· scikit-learn 1.4+ Data: 2,308 real GEE observation points Β· Nyando sub-county, Kenya
models/nyando_xgb_v1.pkldata/training/nyando_training_v1.csv (5,000 rows)data/training/nyando_training_v1_raw_gee.csv (2,308 points)| Feature | Source | License | |---|---|---| | Elevation & Slope | NASA NASADEM 30m | Public Domain | | 3-Day Rainfall | CHIRPS v2 (UCSB) | CC-BY-4.0 | | Flood Labels | Sentinel-1 SAR (ESA) | Free Copernicus | | Soil Clay 0-5cm | ISRIC SoilGrids | CC-BY-4.0 | | River Distance | HydroSHEDS / OSM | ODbL | | Land Cover | ESA WorldCover 2021 | CC-BY-4.0 |
Real feature ranges: Elevation 1,131β2,588m Β· Rainfall 81.8β162.3mm Β· Clay 25.9β57.1%
# Load the model directly
import joblib, numpy as np
model = joblib.load("models/nyando_xgb_v1.pkl")
sample = np.array([[1142.5, 2.3, 87.4, 320.0, 42.1, 40]])
# [elevation, slope, rainfall_3day, distance_river, clay_percent, land_cover]
risk = model.predict_proba(sample)[0, 1]
print(f"Flood risk score: {risk:.3f}") # 0.0β1.0