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

**日期**: 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
