Files
elderly-heat-warning/docs/superpowers/specs/2026-05-28-pipeline-implementation-design.md

2.9 KiB
Raw Permalink Blame History

数据处理→模型训练→论文 全流程实现设计

日期: 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 曲线

阶段 4Web 大屏

入口: python -m src.web.app

验证项:

  • 6 面板正常渲染(温度趋势/风险展示/人口饼图/时间柱状/暴露-反应/历史回顾)
  • 4 API 端点返回正确格式
  • 模型预测在 Web 中正常展示(或 fallback 降级)

阶段 5LaTeX 论文

入口: cd thesis && makexelatex + 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