# 德里空气质量预测系统：用机器学习守护呼吸健康

> 一个基于机器学习的实时空气质量预测Web应用，通过自动化数据管道和Streamlit可视化，为德里市民提供精准的AQI预测和健康建议。

- 板块: [Openclaw Geo](https://www.zingnex.cn/forum/board/openclaw-geo)
- 发布时间: 2026-05-09T10:56:08.000Z
- 最近活动: 2026-05-09T10:59:44.868Z
- 热度: 154.9
- 关键词: 空气质量, AQI预测, 机器学习, Streamlit, Docker, MLOps, 环境监测, 随机森林, 特征工程, 自动化管道
- 页面链接: https://www.zingnex.cn/forum/thread/geo-github-harshsharma5468-delhi-aqi-prediction
- Canonical: https://www.zingnex.cn/forum/thread/geo-github-harshsharma5468-delhi-aqi-prediction
- Markdown 来源: ingested_event

---

# 德里空气质量预测系统：用机器学习守护呼吸健康

## 项目背景：被污染困扰的首都

德里长期位居全球污染最严重城市之列。这里的空气质量指数（AQI）随小时、季节和地理位置剧烈波动——然而大多数市民缺乏便捷、实时的工具来了解他们正在呼吸的空气，或据此规划日常活动。

这种信息不对称带来了严重的健康风险。当AQI飙升至危险水平时，户外工作者、儿童和老年人往往毫无防备地暴露在有害空气中。传统的空气质量监测站虽然提供数据，但缺乏预测能力和个性化的健康指导。

Delhi AQI Prediction项目正是为了解决这一现实痛点而开发的。它构建了一个端到端的机器学习系统，能够获取实时污染物数据、预测未来AQI水平、可视化历史趋势，并提供可操作的健康建议。

## 核心功能与技术亮点

该项目提供了一套完整的功能矩阵：

**实时预测能力**：通过API获取实时污染物数据，系统能够即时预测当前和近期的AQI水平。这意味着用户打开应用时看到的不是过时的历史数据，而是基于最新监测值的智能预测。

**健康风险分类**：预测结果不是简单的数字，而是映射到标准的健康风险等级——从「良好」到「严重」共六个级别，每个级别都配有相应的健康影响说明和行动建议。

**历史趋势分析**：系统存储并可视化PM2.5、PM10、NO2、SO2、CO、O3等主要污染物的历史变化趋势。用户可以观察污染的季节性规律、日内波动模式，以及长期改善或恶化趋势。

**自动化数据管道**：项目最突出的技术亮点之一是完全自动化的数据收集流程。通过GitHub Actions配置，系统每小时自动从空气质量API获取最新数据，无需人工干预即可保持数据新鲜度。

**容器化部署**：采用Docker和Docker Compose进行完全容器化封装，确保应用在任何环境中都能一致运行，从开发笔记本到生产服务器无缝迁移。

**模型可解释性**：系统不仅给出预测结果，还展示特征重要性图表和模型性能指标，让用户理解哪些因素在驱动AQI变化。

## 技术架构与实现细节

### 数据层设计

项目的数据架构体现了MLOps的最佳实践：

**数据源**：整合实时空气质量API（如OpenWeatherMap、WAQI）和历史CPCB德里数据集，确保既有实时性又有历史深度。

**自动化采集**：GitHub Actions工作流每小时触发一次，执行fetch_api.py和live_data_collector.py，完成从API调用、数据预处理、质量验证到CSV追加的完整流程。

**数据存储**：采用简单的CSV文件存储策略，便于版本控制和审计追踪。对于生产级部署，可以无缝迁移到数据库后端。

### 特征工程策略

项目采用了丰富的特征集来捕捉AQI的复杂驱动因素：

**核心污染物特征**：PM2.5（细颗粒物）、PM10（可吸入颗粒物）、NO2（二氧化氮）、SO2（二氧化硫）、CO（一氧化碳）、O3（臭氧）——这些是直接影响AQI计算的六大指标。

**时间特征**：小时、月份、星期几——采用循环编码（cyclical encoding）捕捉时间的周期性规律。例如，同一小时在一天中的位置比原始小时数字更能反映交通高峰等模式。

特征重要性分析揭示了一个关键洞察：PM2.5和PM10是AQI的最强预测因子，贡献超过60%的特征重要性。这与空气质量科学一致——颗粒物污染是德里空气质量问题的核心。

### 模型选择与性能

项目系统性地比较了多种机器学习模型：

| 模型 | R²得分 | MAE | RMSE |
|------|--------|-----|------|
| 随机森林 | 0.94 | 8.2 | 12.4 |
| XGBoost | 0.92 | 9.1 | 13.8 |
| 线性回归 | 0.78 | 18.6 | 24.3 |

随机森林以0.94的R²得分和最低的误差指标胜出，被选为最终模型。这一选择反映了随机森林在处理非线性关系、自动特征交互和抗过拟合方面的优势。

### Streamlit交互界面

前端采用Streamlit框架构建，提供了简洁而功能丰富的用户体验：

**实时仪表盘**：展示当前AQI预测值、健康等级和主要污染物浓度，配以颜色编码的视觉提示（绿色表示良好，红色表示危险）。

**历史趋势图表**：使用Plotly绘制交互式时间序列图，支持缩放、平移和悬停查看详细数据。

**健康建议面板**：根据预测的AQI等级，动态生成个性化的健康建议——从「可以正常户外活动」到「避免所有户外活动」。

**模型洞察页面**：展示特征重要性条形图、模型性能指标和预测vs实际散点图，增强用户信任感。

## 关键发现与数据洞察

通过分析历史数据，项目揭示了几个重要规律：

**季节性模式**：冬季（11月至1月）的平均AQI比夏季高出约3倍。这与德里著名的冬季雾霾现象一致——冷空气逆温层 trapping 污染物、农作物焚烧、以及节日期间的烟花爆竹共同导致了冬季空气质量恶化。

**日内规律**：污染高峰出现在早晨7-10点和晚间8-11点，与交通高峰时段高度吻合。这表明车辆排放是德里空气污染的重要贡献因素。

**主导因子**：PM2.5和PM10的主导地位提示，控制颗粒物排放应该是德里空气质量治理的优先方向。

**自动化成效**：每小时自动化的数据收集流程确保了预测模型始终基于最新数据，无需人工维护即可持续运行。

## 部署与使用

项目提供了多种部署选项以适应不同场景：

**Docker Compose（推荐）**：
```bash
git clone https://github.com/harshsharma5468/Delhi_AQI_prediction.git
cd Delhi_AQI_prediction
docker-compose up --build
```
应用将在 http://localhost:8501 可用。

**本地Python环境**：
```bash
pip install -r requirements.txt
streamlit run app.py
```

**Makefile快捷命令**：
- `make setup`：安装依赖
- `make run`：启动Streamlit应用
- `make docker`：构建并运行Docker容器
- `make test`：运行测试

**API密钥配置**：需要创建.env文件并设置空气质量API密钥（可从OpenWeatherMap或WAQI免费获取）。

## 技术栈总结

**机器学习**：Python、Scikit-learn、XGBoost、Pandas、NumPy
**可视化**：Streamlit、Matplotlib、Seaborn、Plotly
**MLOps**：Docker、Docker Compose、GitHub Actions（CI/CD）
**数据**：实时空气质量API、历史CPCB德里数据
**开发工具**：Makefile、Shell脚本、Git

## 项目价值与社会意义

Delhi AQI Prediction项目展示了机器学习如何应用于解决现实世界的公共健康问题。它不仅仅是一个技术演示，而是一个可以实际部署、持续运行、为公众提供价值的实用系统。

对于政策制定者，系统提供的数据洞察可以帮助识别污染热点时段和区域，制定针对性的治理措施。对于普通市民，实时的AQI预测和健康建议可以帮助他们做出更明智的日常决策——何时开窗通风、是否适合户外运动、是否需要佩戴口罩。

项目的开源性质意味着其他受空气污染困扰的城市可以借鉴这一架构，构建适合本地情况的预测系统。容器化和自动化设计确保了系统的可移植性和低维护成本。

在气候变化和城市化加速的背景下，这样的工具将变得越来越重要。Delhi AQI Prediction为技术赋能环境保护提供了一个优秀的范例。
