89 lines
2.9 KiB
Markdown
89 lines
2.9 KiB
Markdown
# 数据处理→模型训练→论文 全流程实现设计
|
||
|
||
**日期**: 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
|