[ PROMPT_NODE_27098 ]
Pyhealth 模型
[ SKILL_DOCUMENTATION ]
# PyHealth 模型
## 概述
PyHealth 提供了 33+ 种用于医疗预测任务的模型,从简单的基准模型到最先进的深度学习架构。模型分为通用架构和医疗专用模型。
## 模型基类
所有模型都继承自 `BaseModel`,并具备标准的 PyTorch 功能:
**关键属性:**
- `dataset`: 关联的 SampleDataset
- `feature_keys`: 要使用的输入特征(例如 ["diagnoses", "medications"])
- `mode`: 任务类型("binary", "multiclass", "multilabel", "regression")
- `embedding_dim`: 特征嵌入维度
- `device`: 计算设备(CPU/GPU)
**关键方法:**
- `forward()`: 模型前向传播
- `train_step()`: 单次训练迭代
- `eval_step()`: 单次评估迭代
- `save()`: 保存模型检查点
- `load()`: 加载模型检查点
## 通用模型
### 基准模型
**逻辑回归** (`LogisticRegression`)
- 带有均值池化的线性分类器
- 用于比较的简单基准
- 训练和推理速度快
- 具有良好的可解释性
**用法:**
python
from pyhealth.models import LogisticRegression
model = LogisticRegression(
dataset=sample_dataset,
feature_keys=["diagnoses", "medications"],
mode="binary"
)
**多层感知机** (`MLP`)
- 前馈神经网络
- 可配置的隐藏层
- 支持均值/求和/最大池化
- 结构化数据的良好基准
**参数:**
- `hidden_dim`: 隐藏层大小
- `num_layers`: 隐藏层数量
- `dropout`: Dropout 比率
- `pooling`: 聚合方法("mean", "sum", "max")
**用法:**
python
from pyhealth.models import MLP
model = MLP(
dataset=sample_dataset,
feature_keys=["diagnoses", "medications"],
mode="binary",
hidden_dim=128,
num_layers=3,
dropout=0.5
)
### 卷积神经网络
**CNN** (`CNN`)
- 用于模式检测的卷积层
- 对序列和空间数据有效
- 捕获局部时间模式
- 参数高效
**架构:**
- 多个 1D 卷积层
- 用于降维的最大池化
- 全连接输出层
**参数:**
- `num_filters`: 卷积滤波器数量
- `kernel_size`: 卷积核大小
- `num_layers`: 卷积层数量
- `dropout`: Dropout 比率
**用法:**
python
from pyhealth.models import CNN
model = CNN(
dataset=sample_dataset,
feature_keys=["diagnoses", "medications"],
mode="binary",
n