# 数据处理→模型训练→论文 全流程实现设计 **日期**: 2026-05-28 **状态**: 已批准 ## 概述 ERA5 数据下载完毕后(焦作 180 + 郑州 180),执行从数据预处理到 LaTeX 论文填充的完整管线。 ## 阶段 1:预处理 **入口**: `python -m src.data.preprocess`(无参数,遍历 CITIES) **管线**: 1. `load_era5_city` — 拼接 180 个 NetCDF → xarray Dataset 2. `compute_daily_aggregates` — 6h→日平均,K→°C,列重命名 3. `compute_relative_humidity` — Magnus 公式 4. `compute_heat_index` — NOAA Rothfusz 公式 5. `build_features` — 滚动均值(3/7/14天)、滞后(1/2/3/7天)、热浪检测(≥3天)、季节 sin/cos 编码 6. `compute_risk_labels` — 基于体感温度阈值的 0-3 风险标签 7. `create_sequences` — LOOKBACK=14, 3 预测窗口(3/7/30天) → 单次滑动窗口 8. `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.pt` - `outputs/logs/training_history.json` - `outputs/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