目标: 使用多标签分类预测32种肿瘤类型的诊断
- 数据来源: 单中心 (wyfy)
- 患者数: 415,328 人
- 记录数: 3.6M 条
- 肿瘤类型: 32 种
- 模型: LightGBM (AUROC 0.87), BEHRT, Med-BERT
- 评估指标: AUROC with 95% CI (bootstrap)
draw4nature/
├── data/raw/ # 原始数据 (all_patient_data.parquet)
├── training/ # 训练脚本
│ ├── train_lightgbm.py
│ ├── train_behrt.py
│ ├── train_medbert.py
│ └── outputs/ # 模型结果 (JSON + .pt)
├── plotting/ # 绘图脚本
│ ├── figure2_cohort.py ✅ 队列组成
│ ├── figure3a_diagnostic.py ✅ AUROC对比
│ ├── figS7_per_disease_roc.py ROC曲线
│ ├── figS8_per_disease_pr.py PR曲线
│ └── figS14_prediction_distribution.py 概率分布
├── output/figures/ # 输出图表 (PDF + PNG)
├── column_names.txt # 442个特征列
├── figures-only.pdf # 参考文献
└── README.md
cd training
python train_lightgbm.py # 推荐:最快,性能最好
python train_behrt.py
python train_medbert.py特性:
- ✅ Polars 加载 (3-7x faster than Pandas)
- ✅ 8个进度条 (不会显得卡死)
- ✅ 自动保存到
training/outputs/
cd plotting
python figure2_cohort.py # Figure 2: 队列组成
python figure3a_diagnostic.py # Figure 3a: AUROC对比
python figS7_per_disease_roc.py # S7: ROC曲线
python figS8_per_disease_pr.py # S8: PR曲线
python figS14_prediction_distribution.py # S14: 概率分布输出: output/figures/ (PDF + PNG 格式)
| 类型 | 数量 | 示例 |
|---|---|---|
| 实验室检查 | 122 | lab_float_ALT, lab_float_Tumor_AFP |
| 体征 | 51 | sign_SystolicBP, sign_Temperature |
| 诊断 | 258 | diag_Malignant_neoplasm_of_liver |
| TNM分期 | 11 | TNM_T, TNM_N, TNM_M |
完整列表: 见 column_names.txt
- 肝癌、肺癌、结直肠癌、胃癌、乳腺癌...
- 所有列名以
diag_Malignant_neoplasm_of_开头
- 平均AUROC: 0.8658 (0.8642-0.8674, 95% CI)
- 训练时间: ~5分钟
- 推荐理由: 快速、高性能、可解释
- 用于对比实验
- 需要序列化输入
- Figure 2: 队列组成 (患者数、记录数、分布)
- Figure 3a: 诊断AUROC对比 (3个模型)
- Figure S7: 每个癌症的ROC曲线 (32个子图)
- Figure S8: 每个癌症的PR曲线
- Figure S14: 预测概率分布
- 亚组分析 (年龄/性别)
- 肿瘤标志物分析 (AFP→肝癌, CEA→结直肠癌)
- 时序分析 (诊断前后实验室值变化)
- 深度学习内部分析 (UMAP, attention)
- 治疗响应 (无治疗数据)
- 生存分析 (无随访数据)
- 多中心对比 (单中心数据)
详细分析: 见 docs/COMPLETE_FIGURE_ANALYSIS.md
- ❌ 不能跨癌种分析: 肺癌T3 ≠ 肝癌T3
- ✅ 单癌种可用: 仅针对特定癌症分析TNM分布
- 📌 任务差异: PDF用TNM做预后,我们做诊断
- ✅ 32种癌症覆盖广
- ✅ 样本量大 (41万+)
- ✅ AUROC 0.87 表现优秀
- ✅ 传统ML方法可解释
pip install polars pandas numpy scikit-learn matplotlib seaborn tqdm可选 (用于深度学习模型):
pip install torch transformers# 训练完成后
git add training/outputs/
git commit -m "Add model results"
git push
# 生成图表后
git add output/figures/
git commit -m "Add figures S7, S8, S14"
git push注意: .gitignore 已配置,不会提交 *.pt 模型文件
- 完整分析:
docs/COMPLETE_FIGURE_ANALYSIS.md - 列名说明:
column_names.txt - 参考文献:
figures-only.pdf
仅供科研使用,数据不得外传。