共计 1628 个字符,预计需要花费 5 分钟才能阅读完成。
背景介绍
CHB-MIT 数据集是癫痫检测研究中最常用的公开脑电数据集之一,包含来自波士顿儿童医院 22 名癫痫患者的长期 EEG 记录。这个数据集特别适合研究癫痫发作预测和异常检测算法,因为:

- 数据量足够大(超过 900 小时记录)
- 包含发作期和发作间期标注
- 采用临床标准的 EDF 格式存储
典型应用场景包括:
- 开发实时癫痫发作预警系统
- 测试新型特征提取方法
- 比较不同机器学习模型的效果
下载实操
从 PhysioNet 获取数据的最可靠方式是通过命令行工具 wget。以下是具体步骤:
- 首先访问 PhysioNet 官网获取下载权限(需要完成简单的伦理考试)
- 获取授权后,使用以下命令批量下载(约 35GB):
# 递归下载整个数据集(建议使用 screen/tmux 保持会话)wget -r -N -c -np --user YOUR_USERNAME --password YOUR_PASSWORD https://physionet.org/files/chbmit/1.0.0/
下载注意事项:
- 整个过程需要 6 -12 小时(取决于网络状况)
- 建议使用学术网络或云服务器
- 可用 md5sum 校验文件完整性
数据解析
CHB-MIT 数据集使用 EDF(European Data Format)存储,解析时需要特别注意:
import mne
# 加载 EDF 文件(示例)raw = mne.io.read_raw_edf('chb01_01.edf', preload=True)
# 查看通道信息
print(raw.info)
# 提取 EEG 信号(排除非 EEG 通道)picks = mne.pick_types(raw.info, eeg=True)
关键参数说明:
- preload=True 将数据读入内存
- picks 参数筛选 EEG 通道
- info 结构包含采样率等元数据
预处理流程
完整的 EEG 预处理包括以下步骤:
- 滤波(0.5-50Hz 带通)
- 重采样(统一到 256Hz)
- 伪迹去除(ICA 或阈值法)
示例代码:
# 带通滤波
raw.filter(0.5, 50, fir_design='firwin')
# 重采样
raw.resample(256, npad='auto')
# ICA 去眼电
ica = mne.preprocessing.ICA(max_iter=800)
ica.fit(raw)
ica.exclude = [0, 1] # 根据成分图选择
ica.apply(raw)
时间参考(i7-11800H CPU):
- 滤波:约 2 分钟 / 小时数据
- 重采样:1 分钟 / 小时
- ICA:15-30 分钟 / 小时
避坑指南
常见问题及解决方案:
- 时区问题 :EDF 头文件使用本地时区,建议统一转换为 UTC
- 电极命名 :不同病例可能使用不同命名方案(如 ”FP1″ vs “Fp1″)
- 采样率差异 :部分记录存在采样率变化,需强制统一
- 标注文件 :seizure_summary.txt 中的时间戳需要与 EDF 文件对齐
进阶建议
构建基线模型的推荐流程:
- 使用滑动窗口分割 EEG(典型 4 -10 秒)
- 提取时频特征(如小波系数)
- 训练简单的 SVM 或随机森林分类器
- 按 leave-one-patient-out 策略验证
可视化示例代码:
import matplotlib.pyplot as plt
# 绘制 30 秒 EEG 片段
raw.plot(duration=30, scalings='auto')
plt.title('Sample EEG with Seizure')
plt.show()
延伸阅读
- PhysioNet 官方文档:https://physionet.org/content/chbmit/
- MNE-Python 教程:https://mne.tools/stable/auto_tutorials/
- 癫痫检测综述论文:https://doi.org/10.1016/j.jneumeth.2020.108821
使用这个数据集 3 个月后,我的体会是:
1) 一定要先完整阅读官网文档
2) 预处理时间远比预期长
3) 病例间的差异性很大,需要设计鲁棒的算法
希望这篇指南能帮你避开我踩过的坑,顺利开展 EEG 研究。
正文完
发表至: 未分类
近三天内
