Air pollution constitutes a critical public health challenge in rapidly urbanising sub-Saharan African cities, where industrial activity, vehicular emissions, and meteorological dynamics converge to produce complex spatiotemporal pollution patterns. This study presents the first comprehensive geospatial machine learning analysis of multivariate
# Geospatial Machine Learning for Air Pollution Prediction
### Multivariate Environmental Data — Port Harcourt, Nigeria (2023–2025)
> **Paper:** *Geospatial Machine Learning for Air Pollution Prediction Using Multivariate Environmental Data: A Spatiotemporal Analysis of Port Harcourt, Nigeria*
> **Target Journal:** Environmental Science and Pollution Research (Springer)
---
## Overview
This repository contains the full reproducible analysis pipeline for predicting air pollutant concentrations (CO₂, N₂O, CH₄, O₃, CO) across 48 monitoring stations in Port Harcourt, Rivers State, Nigeria, using geospatial, temporal, and meteorological features.
**Dataset:** 576 station-month observations (48 stations × 12 months: August 2023 – January 2025)
---
## Repository Structure
```
air_pollution_ml/
│
├── main.py # Master pipeline — run this
├── data_loader.py # Data ingestion, coordinate fixing, feature engineering
├── eda.py # Descriptive statistics, spatial & temporal summaries
├── stats_tests.py # Shapiro-Wilk, Kruskal-Wallis, Mann-Whitney U, Spearman
├── ml_models.py # 5-fold CV for 5 ML models; feature importance
├── visualization.py # All 6 publication figures
├── requirements.txt # Python dependencies
└── Data_set.xlsx # ← place your dataset here
```
**Outputs** (auto-created in `outputs/`):
| File | Contents |
|------|----------|
| `cleaned_data.csv` | Standardised, combined dataset |
| `descriptive_stats.csv` | Summary statistics for all variables |
| `spatial_summary.csv` | Mean ± SD per monitoring station |
| `temporal_summary.csv` | Monthly mean per pollutant |
| `year_over_year.csv` | 2023 vs 2024-25 comparison |
| `spearman_correlation.csv` | Full correlation matrix |
| `statistical_tests.xlsx` | All formal tests (4 sheets) |
| `cv_results.csv` | 5-fold CV R², RMSE, MAE per model & target |
| `feature_importance.csv` | MDI importances (Random Forest) |
| `oof_predictions_gb.csv` | Out-of-fold …