每日自动更新

未来五天,上海的空气
会是什么颜色?

沪净 AirCast 是一个面向全国部分城市的 PM2.5 浓度预测站,目前已覆盖上海、北京、广州、哈尔滨、拉萨。 每次打开页面时,实时拉取未来 5 天气象预报与近期 PM2.5 实况,送入基于历史数据训练的 随机森林模型(浏览器端代理推理引擎,逐日递推),给出未来五天的浓度预测与通俗解读—— 让出行、运动和开窗通风,都有据可依。

R² —
当前城市测试集决定系数
—
当前城市测试集平均绝对误差
5 城 × 400 树
独立训练的随机森林模型
明日 PM2.5 预测 -- μg/m³ … 详情 →
向下滚动 ▾
5-Day Weather

未来 5 天天气 · 加载中…

以下五项气象要素(风速、温度、气压、露点、湿度)正是预测模型的输入, 打开页面时从 Open-Meteo 数值预报实时获取。标签栏展示次日概要。

… … 正在获取最新预报…

数据来源:Open-Meteo 数值预报(上海,31.23°N 121.47°E),天气现象由 WMO 天气码转换。 注:中国天气网不允许浏览器跨域抓取,故文字预报未直接摘取。

Hourly Detail

明日逐小时曲线 · 加载中…

PM2.5 逐小时为 CAMS 空气质量模型预报,气象要素为 Open-Meteo 数值预报—— 均为打开页面时实时拉取的原始预报数据,未经本站加工。悬停曲线可查看任意时刻数值。

数据加载中…

PM2.5 Forecast

未来 5 天 PM2.5 浓度预测

预测由报告所述随机森林模型的浏览器端代理推理引擎实时生成: 按当前城市独立模型的特征重要性(滞后项 0.476 + 气象项 0.374)校准权重。 明天用真实观测作滞后项;第 2–5 天采用递推预测——以前一天的预测值作为滞后输入,误差随天数累积。

--
μg/m³ · 明日 日均
数据加载中…
实时数据加载失败,当前显示 2026-08-25 抓取的历史快照。
前一日 PM2.5(权重 0.403)--
3 日滑动均值(权重 0.073)--
明日风速--
明日降水(湿清除)--
明日气压 / 湿度 / 露点--
年份趋势(治理效应)--
💡正在计算预测依据…

* 代理引擎为按模型特征重要性重建的简化加性模型,用于网页端演示; 完整随机森林(400 棵树)的离线结果可能略有差异。 PM2.5 实况来自 Open-Meteo Air Quality(CAMS 模型数据,与地面监测站读数可能有偏差)。

五日趋势一览

第 2–5 天为递推预测:滞后特征由前一日预测值滚动生成,气象项仍用当日真实预报。 预测不确定性随天数增大——第 1 天误差约 ±8.8 μg/m³,第 5 天宜作为趋势参考而非精确数值。

明日行动建议

阈值参考中国空气质量标准(GB 3095-2012)与 WHO 指导值,按敏感度整体下调; 敏感人群包括儿童、老人、哮喘及心血管疾病患者。选择会保存在本机。

How It Works
🔬 科研探索项目 · 非官方预报 · 结果仅供学习参考

预测模型的原理与解释

模型设计的核心思想:污染有惯性,气象管扩散。 用昨天的浓度刻画"惯性",用明天的天气刻画"扩散与清除",二者叠加即可预测明日浓度; 将预测值回灌为新的"昨天",即可逐日滚动出未来五天。

特征工程 · 11 个输入

滞后项(前一日 PM2.5、3 日滑动均值)+ 当日气象(温度、湿度、露点、气压、风速、降水)+ 时间项(月份、星期、年份)。全部来自预测时点可获得的信息,杜绝"用明天预测明天"的数据泄漏。

时间切分验证

训练集 2018-05—2023(1727 天)→ 验证集 2024 全年(345 天)→ 测试集 2025-01—08(236 天)。严格按时间先后切分,模拟真实"预测未来"场景。

随机森林回归 · 400 棵树

每棵树在随机样本与随机特征子集上生长,通过不断二分(如"前一日浓度 > 30?风速 < 3?")逼近非线性关系,最终取 400 棵树的平均。相比线性基线,它不会输出物理上不可能的负值,且测试集 R² 明显更高(0.474 vs 0.390)。

多日递推 · 滚动预测

预测第 2 天时,把第 1 天的预测值当作"前一日浓度",与第 2 天的真实气象预报组合,再次推理;如此滚动至第 5 天。代价是误差逐日累积——这是所有多日预测的共同特性,因此越远的日期越应看作趋势而非定值。

动画演示:一次预测是怎么产生的
特征流入 → 400 棵树各自独立投票 → 取平均收敛为最终预测。滚动到此处自动播放。
📈 昨日 PM2.5 📊 3 日均值 💨 风速 🌡️ 温湿压 🏔️ 边界层高度 📅 年份趋势
➜
🌲🌲🌲🌲🌲
随机森林 · 400 棵树
每棵只看随机一部分数据与特征
➜
已统计0 / 400 棵
-- μg/m³
逐棵累加中…(实时运行平均值)
随机森林模型示意图
12.82
测试集 RMSE(μg/m³)
8.81
测试集 MAE(μg/m³)
0.474
测试集 R²(随机森林)
0.390
测试集 R²(线性基线)

特征重要性:什么在驱动预测?

前一日浓度是最强预测因子(污染自相关);剔除它之后,风速在气象因素中居首—— 与文献"平均风速每 +1 m/s,PM2.5 −9.5 μg/m³"的结论在排序上互相印证。 此外,年份作为治理趋势的载体被纳入模型:由 2021–2026 实测年均值拟合, 北京 −1.1%/年、广州 −1.3%/年、哈尔滨 −0.2%/年、拉萨 +1.5%/年(低浓度下小幅回升,如实反映), 预测时按目标年份对惯性基准做乘性修正,避免用过去的污染水平预测今天的空气。

诚实讨论的局限:R²≈0.47 意味着模型能解释次日浓度约一半方差,对常规波动预测可靠; 但对排放驱动的突发性重污染(如烟花爆竹、排放突变)会系统性低估——这类信息不在气象特征里。 此外训练/测试差距(0.875→0.474)表明存在一定过拟合,可通过增大 min_samples_leaf 缓解。 多日递推会进一步放大不确定性,第 3 天之后的数值仅供参考趋势。

上海模型详见《预测模型报告.md》(2026-08-24); 北京 / 广州 / 哈尔滨 / 拉萨四城独立模型(含边界层高度特征,ERA5 气象 + 地面站 PM2.5 训练)见《四城预测模型报告.md》(2026-08-27)。

A Word from the Author

作者的话

感谢各位能访问我利用AI建的小网站,整个预测模型构建和网站建立花费了我一个多月的时间。在使用AI完成各项任务的过程中,我收获颇丰,也遇到了不少困难——获取数据、清洗数据、模型构建,都需要严谨的分析和刨根问底的求证。AI不是一个工具,而是一个帮助我更好看见世界的助手。现在再看空气质量日报,我看到的不只是数字,还有逆温、输送,和一座城市十年的治理。

L 同学 · 2026 年夏