A CNN-LSTM pipeline trained on ERA5-Land reanalysis data to predict monthly drought severity across East Africa at pixel level, reaching 86% accuracy.
# Drought Prediction in the Horn of Africa
Predicting monthly drought severity across East Africa from ERA5-Land reanalysis data, using a combination of unsupervised labelling, deep learning, and LLM-generated narratives.
---
## What this does
There is no ready-made, high-resolution drought label dataset for East Africa, so this project builds one from scratch. A Gaussian Mixture Model and Isolation Forest work together on six monthly climate variables to assign a drought severity score to every land pixel and month from 1980 to 2025. Those scores become three-class labels: normal, moderate, and severe drought.
Three supervised models then learn to predict next month's drought class from the labelled history:
- a CNN baseline that stacks the past 12 months as channels
- a ConvLSTM-UNet that processes the 12-month sequence through a recurrent encoder and a skip-connection decoder
- a year-aware ConvLSTM-UNet that also sees the same calendar month from each of the previous 10 years
The year-aware model reaches ~86% land-pixel accuracy and a severe-drought recall of 0.73, the highest of the three. Channel ablation shows that near-surface temperature, soil moisture, and potential evaporation drive most of the predictions. Temporal ablation confirms the model leans on the most recent few months while still using longer-term seasonal context.
Finally, area-weighted statistics from each monthly prediction are passed to the OpenAI API, which generates short plain-language summaries of where drought is most intense, how persistent it is, and where the model under- or over-predicts.
---
## Project structure
```
drought_prediction.ipynb main notebook — full pipeline end to end
requirements.txt dependencies
figures/ saved plots (maps, ablation charts, narratives)
```
---
## Getting started
**Prerequisites:** Python 3.9+, Jupyter, a CUDA-capable GPU (optional but recommended for training)
```bash
git clone
github.com …