ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

BCI Competition IV 2a 运动想象脑电数据集:4 步从零跑通加载到特征提取的完整指南

BCI Competition IV 2a 运动想象脑电数据集:4 步从零跑通加载到特征提取的完整指南 BCI Competition IV 2a 运动想象脑电数据集4 步从零跑通加载到特征提取的完整指南【免费下载链接】bcidatasetIV2aThis is a repository for BCI Competition 2008 dataset IV 2a fixed and optimized for python and numpy. This dataset is related with motor imagery项目地址: https://gitcode.com/gh_mirrors/bc/bcidatasetIV2a第一次打开A01T.npz看到事件数组里一片 768、769却不知道哪个是试次起点、哪个是类别标签——这正是 BCI Competition IV 2a 这套运动想象脑电MI数据集最常见的卡点。本文按加载→过滤→预处理→特征提取的真实流程给出能直接运行的最小代码。一、数据集概览22 通道 250Hz 的四分类脑电一句话定位9 名被试、4 类运动想象左手/右手/足部/舌头的标准化脑电数据集是 MI 解码入门与对比实验的常用基准。维度取值被试A01–A09共 9 人通道22 个 EEG 通道含 C3/Cz/C4采样率250 Hz类别4 类左手 / 右手 / 足部 / 舌头单文件试次288 个四类等量各 72文件命名AxxT.npz训练集 /AxxE.npz评估集获取方式仓库 clone 后所有.npz与示例脚本就位git clone https://gitcode.com/gh_mirrors/bc/bcidatasetIV2a二、单试次时间轴从注视点到休息的 8 秒每个试次都遵循固定的 cue-based 范式。以试次起点768 事件为 t0各阶段在信号上对应明确的采样区间阶段时间作用注视点0–2s基线可做基线校正视觉提示2–3s类别事件出现769–772运动想象3–7s特征最密集3–5s 信噪比最佳休息7–8s恢复一般不参与建模经验提示做特征提取时优先取3–5s窗口即试次起点后第 750–1250 个采样点该区间 μ/β 带反应最集中比整段 3–7s 更稳。三、事件编码怎么读768 / 769–772 / 1023 速查表事件是试次边界 类别标签的唯一来源。下表覆盖分析中真正用到的编码编码十六进制含义处理方式7680x0300试次开始定位每个 trial 的起点7690x0301左手类 1映射为标签 07700x0302右手类 2映射为标签 17710x0303足部类 3映射为标签 27720x0304舌头类 4映射为标签 310230x03FF被拒绝试次必须过滤不参与训练7830x030F提示未知评估集里类别被隐去注意一个关键差异训练集AxxT用 769–772 标出类别评估集AxxE的提示位统一是 783未知所以标签只能从训练集的事件里读评估集要靠外部标签对齐。四、数据集加载 过滤 1023最小可运行流程这个仓库的.npz暴露的键是s / etyp / epos / edur / artifacts。s形状为(总采样点, 25)前 22 列是 EEG 通道etyp给事件类型epos/edur给每个事件在信号里的位置与时长。试次 由 768 切出的信号块。import numpy as np data np.load(A01T.npz) # keys: s / etyp / epos / edur / artifacts sig data[s][:, :22].T # (采样点,25) - (22,采样点)只取前22个EEG通道 etype, epos, edur data[etyp].ravel(), data[epos].ravel(), data[edur].ravel() trials, labels [], [] class_map {769:0, 770:1, 771:2, 772:3} # 左/右/足/舌 - 0-3 for i in np.where(etype 768)[0]: cue etype[i 1] if cue in class_map: # 1023 等被拒试次在此被自动跳过 t0 epos[i] trials.append(sig[:, t0:t0 edur[i]]) labels.append(class_map[cue]) trials np.array(trials) # (试次数, 22, 采样点)五、EEG 预处理带通滤波 基线校正0.5–30Hz 带通保留 μ/β 信息并去漂移与工频附近噪声基线用提示前的 2.0–2.2s采样点 500–550。from scipy.signal import butter, filtfilt def bandpass(x, fs250, lo0.5, hi30): b, a butter(4, [lo/(fs/2), hi/(fs/2)], btypeband) return filtfilt(b, a, x, axis-1) def baseline(x): # 提示前 2.0-2.2s 作基线 return x - x[:, :, 500:550].mean(axis2, keepdimsTrue) clean [baseline(bandpass(t)) for t in trials] # 其余处理略六、EEG 特征提取时域方差 μ/β 带功率时域取每通道方差频域取 μ8–12Hz、β13–30Hz带内平均功率拼成一个特征向量即可喂给分类器。def features(x, fs250): seg x[:, 750:1250] # 想象期 3-5s信噪比最佳窗口 ft seg.var(axis1) # 时域每通道方差 (22,) P np.abs(np.fft.rfft(seg, axis1))**2 / seg.shape[1] fr np.fft.rfftfreq(seg.shape[1], 1/fs) mu P[:, (fr8)(fr12)].mean(axis1) # 频域μ 带功率 be P[:, (fr13)(fr30)].mean(axis1) # 频域β 带功率 return np.hstack([ft, mu, be]) # 66 维 X np.array([features(t) for t in clean]) # (试次数, 66) # 其余处理略下图是切出的单试次 C3 通道原始波形可直观看到提示后 3–7s 的能量变化七、高频卡点 QAQ1 评估集读不到标签症状AxxE里只有 783。原因评估集刻意隐去类别未知提示。解法用训练集 769–772 学模型评估集靠外部标注对齐。Q2KeyError: y或events症状取不到标签/事件键。原因本仓库键是s/etyp/epos/edur/artifacts没有y/events。解法类别由 768 之后那个事件推出见第四节。Q3 试次被切得不对/太短症状窗口只有几百点。原因误用单事件时长。解法trial 块以 768 的edur约 1875 点7.5s为准想象期取其中 750–1750 点。Q4 被拒试次混进训练症状标签数对不上 288。原因部分试次后接 1023。解法只保留etype[i1] in class_map的试次artifacts列的 1 也标记了被拒。Q5 C3 到底取第几列症状通道选错。原因s前 22 列才是 EEG。解法C3 对应第 7 列C3/Cz/C4 为运动皮层主区优先保留。八、延伸方向个体化建模MI 特征个体差异大可对每个被试单独估 CSP/滤波器或用校准数据做自适应缩短上线前的标定时间。多模态融合把 EEG 与 fNIRS、EMG 在特征层或决策层拼接可提升对运动伪差的鲁棒性代价是同步与对齐复杂度。实时系统在线场景需流式切窗滑窗因果滤波并在 250Hz 下做低延迟推理离线流程里的filtfilt要换成单向滤波器。现在就把A01T.npz跑一遍用上面的三段代码切出trials与 66 维特征接一个 LDA 或 SVM 即可拿到第一版基线。完整字段说明见 docs/official.md多通道提取与绘图示例见 examples/。【免费下载链接】bcidatasetIV2aThis is a repository for BCI Competition 2008 dataset IV 2a fixed and optimized for python and numpy. This dataset is related with motor imagery项目地址: https://gitcode.com/gh_mirrors/bc/bcidatasetIV2a创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表