AQI Forecasting
The forecasting model itself wasn't the hard part. Making it something I could rebuild six months later and get the same numbers from, that was.
Built as a project, not a notebook
This one exists as much for its structure as its results. It follows the Cookiecutter Data Science layout: raw data separated from interim and processed, feature engineering separated from modelling, the whole thing runnable end to end. The path from source data to reported metric is a sequence of steps, not a scroll position in someone's notebook.
The modelling
XGBoost handles the forecast, chosen for tabular data with the mix of seasonal and meteorological drivers that pollutant levels have. GridSearchCV tunes the hyperparameters, so the final configuration comes from a defined search rather than whatever happened to look good, and StandardScaler sits inside the pipeline itself, so the scaling is learned on training data alone.
A recurring subject
Air quality, weather and emissions keep showing up in my projects because the readings are public, physical and messy, which makes them a better test of a pipeline than a clean benchmark set.
- Role
- Sole developer
- Target
- Ozone and pollutant levels
- Stack
- XGBoost, scikit-learn, Cookiecutter Data Science