# CLAUDE.md ## 项目概述 本科毕业设计:银发群体高温多时间尺度预警和服务优化可视化研究。为焦作市和郑州市老年群体构建基于 ERA5-Land 气象数据的高温健康风险预警模型(XGBoost + LSTM-Attention),并开发 Flask+ECharts 可视化大屏。 ## 技术栈 - **Python 3.13**(uv 管理虚拟环境 `.venv`) - **PyTorch 2.12.0+cu126**(GPU 训练,RTX 4060 Laptop 8GB) - **XGBoost 2.0+** / **Scikit-learn 1.3+** - **Flask 3.0+** / **ECharts 5.5** - **LaTeX**(XeLaTeX + ctexbook,中文字体 STSong/Noto Sans SC/FangSong) - **xarray + h5netcdf + h5py**(NetCDF4 读取) ## 常用命令 ```bash # 环境 uv sync # 同步依赖(含 CUDA PyTorch) uv run python -c "..." # 运行 Python 代码 # 数据管线 uv run python -m src.data.download_era5 # CDS API 下载 ERA5 uv run python -m src.data.extract_zips # ZIP→NetCDF 解压 uv run python -m src.data.preprocess # 预处理管线 # 模型 uv run python -m src.models.train # 训练 LSTM uv run python -m src.models.evaluate # 评估 + XGBoost 训练 # Web uv run python -m src.web.app # 启动 Flask (localhost:5005) # 论文 cd thesis && xelatex -interaction=nonstopmode main && xelatex -interaction=nonstopmode main # Git git push origin main # 推送到 Gitea ``` ## 项目结构 ``` src/ ├── data/ │ ├── download_era5.py # CDS API 逐月下载(360文件) │ ├── extract_zips.py # ZIP 解压(CDS 新格式适配) │ ├── preprocess.py # 8步预处理管线(597行) │ └── collect_mortality.py # 死亡率/人口数据整理 ├── models/ │ ├── lstm_attention.py # LSTM-Attention 模型(983K参数) │ ├── xgboost_baseline.py # XGBoost 三分类器基线 │ ├── train.py # 训练脚本(Focal Loss + 早停) │ └── evaluate.py # 评估对比 + 图表生成 ├── web/ │ ├── app.py # Flask 4端点 (predict/history/stats/index) │ └── static/index.html # ECharts 6面板大屏(~800行) └── utils/config.py # 全局配置(城市坐标/超参数/路径) ``` ## 关键路径 | 路径 | 说明 | |------|------| | `data/raw/era5/{city}/` | 每城 180 个 NetCDF 月文件 | | `data/processed/` | NPZ 序列 + CSV 特征(gitignored) | | `outputs/models/best_model.pt` | LSTM 最佳 checkpoint(12MB,gitignored) | | `outputs/figures/` | 评估图表(PNG, 300dpi) | | `outputs/logs/` | 训练日志 | | `thesis/main.pdf` | 编译后 PDF(56页) | ## 运行注意事项 - CDS 下载很慢(约5天),使用单线程 + 5次指数退避重试,中断后可直接重启(已存在文件自动跳过) - CDS 迁移后返回 ZIP 格式,需要 `extract_zips.py` 解压(文件头魔数检测 PK→ZIP) - NetCDF 读取用 `h5netcdf` 引擎,不要用 `netcdf4`(Windows 需额外 DLL) - 论文编译需 XeLaTeX + STSong/Noto Sans SC/FangSong 字体(Windows 自带或在系统字体目录) - 类别极度不平衡(低风险 94-96%),LSTM 多次调优未收敛,XGBoost 为主力模型 ## 远程仓库 Gitea: `git@lhy-git.liuhangyv.top:Serendipity/elderly-heat-warning.git`