This project builds a deep learning model to **forecast the next 7 days of daily temperature** in **Abeokuta, Ogun State, Nigeria** — using 9 years of historical weather data (2017–2026).
# 🌤️ Abeokuta 7-Day Weather Forecast
### Multi-Step Temperature Forecasting with GRU (PyTorch) + Streamlit Dashboard
---
## Overview
This project builds and deploys a deep learning model that forecasts the **next 7 days of daily temperature** for **Abeokuta, Ogun State, Nigeria**, using 9 years of historical weather data (2017–2026).
Abeokuta has a tropical climate with a distinct **wet season (April–October)** and **dry season (November–March)**. This seasonal structure makes temperature patterns learnable from historical data — which this project exploits using a Gated Recurrent Unit (GRU) neural network.
The project has two components:
- **`Forecasting_Abeokuta_Weather_Portfolio.ipynb`** — the full research notebook covering data collection, EDA, model training, and evaluation.
- **`app.py`** — a Streamlit web app that loads the trained model and serves a live 7-day forecast dashboard.
---
## Project Structure
```
├── Forecasting_Abeokuta_Weather_Portfolio.ipynb # Training & research notebook
├── app.py # Streamlit dashboard app
├── GRU_model.pth # Trained model weights (generated by notebook)
├── weather_data/ # Folder of downloaded CSV files
│ ├── weather_2017_2017.csv
│ ├── weather_2018_2018.csv
│ └── ...
└── README.md
```
---
## How It Works
### 1. Data Collection
Historical daily weather data is fetched from the Visual Crossing Weather API, one year at a time, to stay within free-tier limits. Each yearly file is cached locally so downloads are never repeated. The data includes temperature (°F), humidity, precipitation, wind speed, and weather conditions.
### 2. Exploratory Data Analysis (EDA)
The notebook visualises 9 years of temperature data, including daily values, 30-day rolling means, and seasonal decomposition — confirming the clear wet/dry seasonal rhythm expected in Abeokuta.
### 3. Preprocessing
- Columns used: `datetime` …