chore: LSTM 训练调优总结 — 类别加权/采样器/权重多项尝试,XGBoost 仍为最佳

This commit is contained in:
2026-05-28 12:54:40 +08:00
parent 23f3f9e4fb
commit 1a36d146be
4 changed files with 4966 additions and 6 deletions
@@ -0,0 +1,88 @@
# 数据处理→模型训练→论文 全流程实现设计
**日期**: 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 && 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