[ PROMPT_NODE_27100 ]
Pyhealth 预处理
[ SKILL_DOCUMENTATION ]
# PyHealth 数据预处理与处理器
## 概述
PyHealth 提供了全面的数据处理工具,将原始医疗数据转换为模型就绪的格式。处理器负责特征提取、序列处理、信号转换和标签准备。
## 处理器基类
所有处理器都继承自 `Processor`,并具有标准接口:
**关键方法:**
- `__call__()`: 转换输入数据
- `get_input_info()`: 返回处理后的输入模式
- `get_output_info()`: 返回处理后的输出模式
## 核心处理器类型
### 特征处理器
**FeatureProcessor** (`FeatureProcessor`)
- 特征提取的基类
- 处理词汇表构建
- 嵌入准备
- 特征编码
**常见操作:**
- 医疗代码分词
- 分类编码
- 特征归一化
- 缺失值处理
**用法:**
python
from pyhealth.data import FeatureProcessor
processor = FeatureProcessor(
vocabulary="diagnoses",
min_freq=5, # 最小代码频率
max_vocab_size=10000
)
processed_features = processor(raw_features)
### 序列处理器
**SequenceProcessor** (`SequenceProcessor`)
- 处理序列临床事件
- 保留时间顺序
- 序列填充/截断
- 时间间隔编码
**关键特性:**
- 变长序列处理
- 时间特征提取
- 序列统计计算
**参数:**
- `max_seq_length`: 最大序列长度(如果更长则截断)
- `padding`: 填充策略("pre" 或 "post")
- `truncating`: 截断策略("pre" 或 "post")
**用法:**
python
from pyhealth.data import SequenceProcessor
processor = SequenceProcessor(
max_seq_length=100,
padding="post",
truncating="post"
)
# 处理诊断序列
processed_seq = processor(diagnosis_sequences)
**NestedSequenceProcessor** (`NestedSequenceProcessor`)
- 处理层级序列(例如,包含事件的就诊)
- 两级处理(就诊级和事件级)
- 保留嵌套结构
**用例:**
- 包含多个事件的 EHR 就诊
- 多级时间建模
- 层级注意力模型
**结构:**
python
# 输入: [[visit1_events], [visit2_events], ...]
# 输出: 带有适当填充的处理后的嵌套序列
### 数值数据处理器
**NestedFloatsProcessor** (`NestedFloatsProcessor`)
- 处理嵌套数值数组
- 实验室值、生命体征、测量值
- 多级数值特征
**