The problem
The Indian summer monsoon delivers the overwhelming share of the country's annual rainfall in just four months, and its swings decide farm incomes, reservoir levels and water policy. The India Meteorological Department publishes long district- and subdivision-level rainfall series, and large-scale climate signals such as ENSO (El Niño/La Niña) are known to modulate monsoon strength. Machine learning can exploit these signals: gradient-boosted trees learn non-linear interactions between lagged rainfall, temperature and humidity anomalies and the prevailing climate state. But rainfall is a chaotic system, and intellectual honesty is the core design constraint here — skillful prediction lives at the monthly and seasonal scale, not at "will it rain on Saturday". This project builds a monthly-scale predictor with walk-forward validation and states its predictability limits in the report instead of hiding them.
How it works
- Public IMD monthly/district rainfall series load from data.gov.in; missing months are marked and excluded from supervised rows rather than invented.
- The feature builder adds lagged rainfall (1/3/6/12 months), month-of-year, region encoding, temperature/humidity/pressure anomalies versus monthly normals, and the season's ENSO phase.
- A gradient-boosting regressor trains on the feature table to predict monthly rainfall totals; a logistic classifier head predicts the wet-month probability for zero-inflated regions.
- Validation is walk-forward: the model trains on all years up to Y and is tested on year Y+1, rolling through the record, with skill scored against the climatology baseline.
- ENSO-conditioned splits re-run the evaluation separately for El Niño, La Niña and neutral years to expose regime-dependent performance.
- The demo app renders the monsoon board (regional climatology, season progress), the predictor (inputs in, rainfall + probability + driver contributions out), and the climate-analysis view.
Tech stack:
- Python 3.10, scikit-learn (gradient boosting, logistic regression, metrics)
- pandas, NumPy (climate panel wrangling, lag features)
- Matplotlib, Seaborn (climatology charts, validation curves, skill plots)
- Jupyter notebook (buyer-run walk-forward training and evaluation)
- Flask demo app (monsoon board, predictor, analysis views)
| Parameter | Value |
|---|---|
| Model | Gradient-boosting regressor + logistic rain-probability head |
| Task | Monthly rainfall (mm) regression; wet-month classification |
| Data | Public IMD monthly/district rainfall series (data.gov.in) |
| Features | Lags 1/3/6/12 mo, month, region, T/H/P anomalies, ENSO phase |
| Validation | Walk-forward (train ≤Y, test Y+1); skill vs climatology baseline |
| Metrics | RMSE, MAE, rain-day F1, skill score — buyer-run notebook |
| Scope | Monthly/seasonal tendencies; explicitly NOT day-level timing |
| Input | Region, month, anomalies, ENSO phase, last-month rainfall |
| Output | Predicted rainfall (mm), wet-month probability, driver breakdown |
| Training hardware | Any modern CPU; no GPU needed |
Project features
- [Monthly rainfall regression] A gradient-boosting regressor predicts expected monthly rainfall (mm) for a chosen region and month from lagged series, anomalies and ENSO phase.
- [Rain/no-rain probability head] A separate classifier predicts P(monthly rain > 75 mm), handling the zero-inflation that breaks pure regression in arid regions.
- [Walk-forward validation] Train on years up to Y, test on Y+1, roll forward — the evaluation mimics real forecasting with no future leakage, and the notebook automates it.
- [Skill vs climatology] Every model must beat the naive "predict the monthly normal" baseline; results are reported as skill scores, not raw RMSE alone.
- [ENSO-conditioned analysis] El Niño, La Niña and neutral years are validated separately, since monsoon teleconnections are regime-dependent.
- [Dry-spell and extreme-event views] A two-state Markov chain estimates dry-spell risk per region, and daily IMD series yield extreme-rainfall-day trends for the analysis section.
- [Driver-contribution display] Each prediction breaks down into climatology, ENSO modulation, anomaly response and persistence, so the report can explain any single forecast.
What is included
- Complete source code (data loading, features, training, walk-forward evaluation, demo)
- Jupyter notebook (buyer-run: walk-forward training, metrics, skill plots, analysis)
- Reference trained models from the worked example run
- Project report PDF (background, methodology, validation, honest limits, analysis)
- PPT presentation for final review
- Viva Q&A preparation document (walk-forward, ENSO, skill scores, chaos limits)
- Setup guide (environment, IMD data download, running the notebook, using the demo)
Limitations & prerequisites
- The system predicts monthly and seasonal tendencies only; day-level rainfall timing is beyond its scope — and beyond machine learning's honest reach without numerical weather models. The report states this boundary explicitly.
- Unprecedented extremes (record-breaking cloudbursts) are out-of-distribution events; the model will underpredict them, and the report documents this failure mode.
- Public IMD series have gaps and station changes over the decades; missing months are excluded, which shortens some regional records.
- ENSO is a modulator, not a switch — El Niño years still contain normal monsoons, so ENSO-conditioned skill varies and is reported per regime.
- This is a research and academic prototype, not an operational forecasting service; it does not replace IMD outlooks for real decisions.
Frequently Asked Questions
Which dataset is used?
Public rainfall series from the India Meteorological Department via data.gov.in (district/monthly records), plus a public ENSO-phase index for the teleconnection feature. Both are genuinely public and the notebook documents access.
Can it tell me if it will rain next week?
Honestly, no — and the report says so. Skillful ML prediction lives at the monthly/seasonal scale; beyond ~10–14 days, atmospheric chaos defeats statistical models. Day-level timing needs numerical weather prediction, a different field.
What is walk-forward validation?
Training only on years up to Y and testing on year Y+1, then rolling forward. It mimics how the model would actually be used and prevents the future-leakage that inflates shuffled cross-validation scores on time series.
What does "skill vs climatology" mean?
The model must beat the dumb baseline of predicting each month's long-term normal. Skill score = 1 − (model error / baseline error); a positive skill means the model adds real value, and the notebook reports it.
How does ENSO affect the prediction?
The ENSO phase enters as a feature: El Niño typically suppresses and La Niña enhances monsoon rainfall. The demo shows the modulation percentage, and validation is run separately per regime.
Does it need internet?
Only to download the IMD series once. Training, evaluation and the demo run fully offline after that. Suitable for B.E./B.Tech final-year projects in Computer Science, AI/ML and Data Science.
Components & software requirements
- Python 3.10, scikit-learn (gradient boosting, logistic regression, metrics)
- pandas, NumPy (climate panel wrangling, lag features)
- Matplotlib, Seaborn (climatology charts, validation curves, skill plots)
- Jupyter notebook (buyer-run walk-forward training and evaluation)
- Flask demo app (monsoon board, predictor, analysis views)
Delivery information
Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.
Support terms
Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.