2.9 KiB
2.9 KiB
数据处理→模型训练→论文 全流程实现设计
日期: 2026-05-28 状态: 已批准
概述
ERA5 数据下载完毕后(焦作 180 + 郑州 180),执行从数据预处理到 LaTeX 论文填充的完整管线。
阶段 1:预处理
入口: python -m src.data.preprocess(无参数,遍历 CITIES)
管线:
load_era5_city— 拼接 180 个 NetCDF → xarray Datasetcompute_daily_aggregates— 6h→日平均,K→°C,列重命名compute_relative_humidity— Magnus 公式compute_heat_index— NOAA Rothfusz 公式build_features— 滚动均值(3/7/14天)、滞后(1/2/3/7天)、热浪检测(≥3天)、季节 sin/cos 编码compute_risk_labels— 基于体感温度阈值的 0-3 风险标签create_sequences— LOOKBACK=14, 3 预测窗口(3/7/30天) → 单次滑动窗口preprocess_all— 遍历城市,合并保存
产出: data/processed/sequences.npz
- X: (N, 14, input_dim) float32
- y_short: (N,) int64 (4类)
- y_medium: (N,) int64
- y_long: (N,) int64
阶段 2:模型训练
入口: python -m src.models.train
LSTM-Attention:
- 架构: Input Proj → 2-layer BiLSTM(128) → 4-head MHA → 3 独立 head
- 损失: Focal Loss (alpha=0.25, gamma=2.0)
- 优化器: AdamW (lr=1e-3)
- 调度器: ReduceLROnPlateau (patience=8)
- 早停: 15 epochs
- 设备: CUDA (RTX 4060)
XGBoost 基线:
- 输入: X.reshape(N, 14*D) 展平
- 3 个独立 XGBClassifier (n_estimators=200, max_depth=6, lr=0.05)
分割: 时间顺序 70/15/15(约 2010-2020 / 2021-2022 / 2023-2024)
产出:
outputs/models/best_model.ptoutputs/logs/training_history.jsonoutputs/models/test_predictions.npz
阶段 3:评估
入口: python -m src.models.evaluate
产出图表(中文标注, 300dpi):
outputs/figures/confusion_matrix.png— 3×2 子图(LSTM/XGBoost × 3时间尺度)outputs/figures/model_comparison.png— F1 + Accuracy 柱状对比图outputs/figures/training_curves.png— loss/acc 曲线
阶段 4:Web 大屏
入口: python -m src.web.app
验证项:
- 6 面板正常渲染(温度趋势/风险展示/人口饼图/时间柱状/暴露-反应/历史回顾)
- 4 API 端点返回正确格式
- 模型预测在 Web 中正常展示(或 fallback 降级)
阶段 5:LaTeX 论文
入口: cd thesis && make(xelatex + biber)
填充内容:
- 第 1 章:研究背景(已有框架)
- 第 2 章:数据与方法 → 填入 ERA5 变量表、NOAA 公式、模型架构
- 第 3 章:模型设计 → LSTM-Attention + XGBoost 架构图
- 第 4 章:实验与结果 → 插入评估图表、分类报告
- 第 5 章:可视化系统 → Web 大屏截图
- 第 6-7 章:讨论与结论
依赖与前置条件
- Python 3.13 + CUDA PyTorch 2.12.0+cu126
- GPU: RTX 4060 Laptop (8GB VRAM)
- ERA5 数据: 焦作 180 + 郑州 180 NetCDF
- 外部数据: mortality_population.csv, exposure_response.csv