1. CHB-MIT数据集概述与获取
CHB-MIT数据集是癫痫研究领域最具影响力的公开脑电图(EEG)数据集之一,由波士顿儿童医院与麻省理工学院联合收集。该数据集包含来自22名儿科患者的23组EEG记录(其中一名患者有两组独立记录),总时长超过982小时,包含180次临床癫痫发作事件。所有数据均通过国际10-20系统放置的23个电极采集,采样率为256Hz,存储为EDF格式。
重要提示:由于涉及医疗数据,使用前需签署数据使用协议。最新版数据集可通过OpenDataLab平台获取,包含完整的患者元数据、临床注释和电极位置信息。
数据集目录结构通常包含:
patient_info_summary.csv:患者年龄、性别、用药情况等元数据seizure_summary.xlsx:癫痫发作起止时间标注edf_files/:原始EDF格式EEG记录文件annotation_files/:专家标注的发作事件文本记录
2. 预处理核心流程设计
2.1 原始数据质量检查
在开始正式预处理前,必须执行以下质量验证:
文件完整性校验:使用EDF浏览器工具检查每个文件是否能正常打开,确认文件头信息中的采样率、通道数与实际数据一致。常见问题包括部分文件传输损坏或头信息错误。
电极信号质量评估:
import mne raw = mne.io.read_raw_edf('chb01_01.edf', preload=True) raw.plot(duration=60, n_channels=23, scalings='auto')通过可视化检查各通道信号,重点关注:
- 是否存在电极脱落(平直线条)
- 50/60Hz工频干扰是否严重
- 肌电伪迹和眼动伪迹的分布情况
2.2 信号标准化处理流程
2.2.1 重参考与滤波
采用双极重参考(bipolar referencing)减少共模噪声:
raw.set_eeg_reference(ref_channels=['A1', 'A2']) raw.filter(l_freq=0.5, h_freq=70) # 带通滤波去除极低频漂移和高频噪声 notch_filter = 50 # 根据采集地区电网频率设置 raw.notch_filter(notch_filter)2.2.2 伪迹去除技术选型
针对CHB-MIT数据特点,推荐处理策略:
- 独立成分分析(ICA):
ica = mne.preprocessing.ICA(n_components=15, random_state=97) ica.fit(raw) ica.plot_components() # 人工识别眼动/肌电成分 ica.exclude = [0, 2] # 根据图谱排除特定成分 ica.apply(raw) - 自适应阈值去噪:对高振幅瞬态伪迹采用基于移动窗口标准差的自检测算法
2.3 数据分段策略
2.3.1 发作期与非发作期划分
根据临床标注文件,创建两种数据切片:
- 发作期(ictal):发作开始前30秒至发作结束后60秒
- 间歇期(interictal):距最近发作至少4小时外的稳定段
关键参数:间歇期片段长度建议10-30秒,与发作期保持相同时长平衡样本量
2.3.2 滑动窗口实现
epochs = mne.make_fixed_length_epochs(raw, duration=10, overlap=2)3. 特征工程与数据增强
3.1 时频域特征提取
推荐特征组合:
波段功率特征:
- Delta (0.5-4Hz), Theta (4-8Hz), Alpha (8-13Hz)
- Beta (13-30Hz), Gamma (30-70Hz)
非线性动力学特征:
from entropy import spectral_entropy entropy_features = [spectral_entropy(signal, sf=256, method='fft', nperseg=256) for signal in epochs]
3.2 类别不平衡处理
由于发作期数据占比通常<5%,需采用:
- 合成过采样:使用ADASYN算法生成合成样本
- 代价敏感学习:在损失函数中设置class_weight参数
4. 存储优化与版本管理
4.1 高效存储格式选择
| 格式 | 优点 | 适用场景 |
|---|---|---|
| HDF5 | 压缩比高,支持分块读取 | 大规模特征矩阵 |
| NPZ | 加载速度快,Python原生支持 | 小型临时数据 |
| Parquet | 列式存储,适合特征工程 | 结构化特征表 |
4.2 预处理流水线示例
from sklearn.pipeline import Pipeline from mne.decoding import Vectorizer preprocess_pipeline = Pipeline([ ('filter', mne.preprocessing.ICA(n_components=15)), ('feature_extractor', Vectorizer()), ('scaler', StandardScaler()) ])5. 实际应用中的挑战与解决方案
5.1 跨患者泛化问题
CHB-MIT数据集存在显著的患者间差异,建议:
- 采用Leave-One-Patient-Out交叉验证
- 使用域自适应技术如CORAL对齐特征分布
5.2 实时处理延迟优化
对于在线检测系统,可采用:
- 滑动窗口增量计算
- Cython加速关键特征计算步骤
我在实际处理中发现,FP1-F7通道在多数患者中信号质量最不稳定,建议优先检查该通道数据完整性。另外,使用Butterworth滤波器时,阶数设置为6可在相位失真和阻带衰减间取得较好平衡。