ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

DEAP与SEED-IV脑电情绪检测:SVM通道级分类方案

DEAP与SEED-IV脑电情绪检测:SVM通道级分类方案

简介:基于EEG的DEAP与SEED-IV数据库情绪检测研究论文,聚焦情感计算与脑机接口方向,面向毕业设计、机器学习初学者及从事情绪识别的研究人员。论文系统回顾了基于公开数据的EEG情绪检测相关工作,并给出完整研究方法:先对预处理信号做离散小波变换,切分出5个所需频段,再提取功率、能量、微分熵和时域特征,设计通道级SVM分类器并通过通道组合器决策,实现二维模型中多种内心情绪状态的识别。实验在DEAP与SEED-IV两个公开数据库上进行,四分类准确率分别达到74%~86%和74%~79%,并对脑机接口应用场景做了说明。压缩包内为单篇PDF全文,共1个文件,701KB,轻量易用。目前已有346人学习下载,适合需要复现SVM情绪识别流程、参考特征工程与分类器设计思路的读者,可作为毕业设计或论文写作的参考资料。

1. 需求先立住:为什么情绪检测毕设都绕不开 DEAP、SEED-IV 和 SVM

做「基于 EEG 的 DEAP 和 SEED-IV 数据库的情绪检测」这类课题,第一道坎不是模型,而是数据。自己搭采集设备不现实,实验室里拿真实受试者做实验又要过伦理审批,样本标注还带着大量主观噪声。于是公开数据库加 SVM 支持向量机就成了最优解:DEAP 提供了 32 个受试者的连续情绪标注,SEED-IV 提供了更高采样率的多 session 数据,两者都是现成的 mat 文件,省掉了最烧钱的采集环节;SVM 又是中小样本分类里边界最稳、最好解释的算法,用来撑起一份课程设计或毕业设计的完整链路非常合适。这套方案适合两类人:一是要交完整设计的学生,照着这条链路能直接出结果;二是想快速验证 EEG 情绪分类思路的从业者,拿公开数据跑通流程再迁移到自有场景。

2. 总体方案设计:从原始 EEG 到四类情绪状态的完整链路

2.1 数据选型:DEAP 与 SEED-IV 的协议差异对比

选数据库不能只看"哪个下载方便",要看它背后的采集协议。DEAP 用的是 32 通道设备,采样率 500Hz,给每个受试者放 40 段一分钟视频,受试者看完后按情感轮做 arousal 和 valence 的连续打分;SEED-IV 用的是 64 通道设备,采样率 1000Hz,放的是 24 段两分钟视频,15 个受试者每人做 3 个 session(不同天进行),所以实际样本量是 45 个 session 的数据。

这两个库的差异直接决定了后续训练集和测试集怎么切。原论文的做法是:DEAP 拿 22 个受试者做训练、10 个做测试;SEED-IV 拿 32 个 session 做训练、13 个做测试。这里有个容易被忽略的点:DEAP 是"人"维度上的划分,SEED-IV 是"session"维度上的划分,因为 session 本身就对应"某个人某一天",所以 SEED-IV 的泛化性验证更严格——同一个人在不同天的脑电差异也会被算进测试误差。

对比项DEAPSEED-IV
通道数3264(落地时统一取 32 个公共通道)
采样率500Hz1000Hz(可用时按需降采样)
受试者32 人15 人 × 3 session = 45
刺激材料40 段 × 1 分钟视频24 段 × 2 分钟视频
标注方式情感轮连续打分四类离散标签
训练/测试划分22 人训练,10 人测试32 个 session 训练,13 个测试

选型的核心逻辑是互补验证:DEAP 的连续标注可以自己映射成四象限类别,适合验证"维度模型到离散标签"的转换;SEED-IV 的天然四类标签适合验证模型在多天多 session 下的稳定性。两套数据都跑一遍,比只跑一个库更有说服力,这也是原论文能把准确率做成一张对比表的原因。

2.2 事件分离与通道对齐:两套数据如何统一口径

拿到 mat 文件之后,第一件事不是提特征,而是把连续脑电切分到事件级别。DEAP 原始采集是连续记录,每个受试者看 40 段视频,但视频之间的静息段不能混进样本里;SEED-IV 在发布时已经按视频事件做了预分离,所以省了一步。原论文的做法是"依据采集协议把每个事件从连续数据里切出来",DEAP 的 mat 文件里已经完成了这一步,SEED-IV 同理。落地时我建议你打印一下每个 mat 的结构,确认事件数是否和协议一致——DEAP 应该能看到 40 个 trial,SEED-IV 应该能看到 24 个 trial,数量对不上说明数据下载不完整。

通道对齐是第二个必须处理的点。DEAP 是 32 通道,SEED-IV 是 64 通道,但两套设备的电极布放都遵循 10-20 国际系统。原论文明确说"两个数据库取相同的通道",实际操作是:根据电极名称取交集,比如 Fp1、F3、C3、P3、O1 这些两套设备都有的电极,最终统一到 32 个公共通道。这一步做不好,后面所有通道级 SVM 的特征维度都会错位。

这里还有一个采样率的问题。DEAP 是 500Hz,SEED-IV 是 1000Hz,放在同一个对比实验里,频带划分的 DWT 层号会不一样。稳妥的做法是统一降采样到 128Hz 或 256Hz,这样既保留 EEG 的 0.1-60Hz 有效范围,又让两套数据的分解层号对应关系一致。原论文没有提降采样,但如果你在复现时发现 SEED-IV 跑得特别慢,降采样是性价比最高的优化。

2.3 五个处理阶段:谁先谁后决定了你能否复现

整套方法可以拆成五个阶段,顺序不能乱:

  1. 数据获取与事件分离:拿到按事件切分好的脑电段;
  2. 预处理:陷波、重参考、中值滤波、带通滤波;
  3. 特征提取:先做 8 层 DWT 分解出五个频带,再逐通道算 34 维特征;
  4. 分类:每个通道单独训练一个 SVM,共 32 个分类器;
  5. 通道融合:把 32 个分类器的预测结果合并,得到最终四类情绪。

这个顺序看起来简单,但每一步之间是有依赖的。比如中值滤波必须在陷波之后做,否则工频干扰会被误判成脉冲噪声;DWT 分解必须在带通滤波之后做,否则滤波器通带外的能量会污染小波系数。原论文里有个细节值得注意:预处理用的三个滤波器不是乱选的——50Hz 陷波对应国内 230V/50Hz 交流电的工频干扰,中值滤波对应电极接触不良产生的尖峰,带通滤波对应 EEG 的有效频率范围。每加一个滤波器都要知道它在防什么噪声,答辩时才不会被问住。

我一般会建议在写报告时把每个阶段的输入输出尺寸写清楚:预处理输入是"事件数 × 通道数 × 采样点数",特征提取输出是"事件数 × 34",分类阶段是"每个通道一个 880×34 或 742×34 的特征矩阵"。尺寸对得上,代码才跑得通。

3. 预处理与特征提取:五频带 DWT 与 34 维特征向量的落地细节

3.1 预处理管线:陷波、重参考、中值滤波、带通滤波的顺序与参数

预处理是整套方法里最"玄学"的部分,滤波器参数差一点,后面的特征和准确率就会跟着变。原论文给出的参数很明确:先做 50Hz 陷波,再做平均参考重参考,然后过 1-D 10 阶中值滤波,最后做 0.1 到 60Hz、20 阶的带通滤波。用 MATLAB 实现大概是这个顺序:

% 步骤1: 50Hz 陷波,去除工频干扰(国内市电为 50Hz) d1 = designfilt('bandstopiir', 'FilterOrder', 4, ... 'HalfPowerFrequency1', 49, 'HalfPowerFrequency2', 51, ... 'SampleRate', fs); sig = filtfilt(d1, sig); % 步骤2: 平均参考重参考,让各电极共用同一参考电位 sig = sig - mean(sig, 1); % 步骤3: 1-D 10阶中值滤波,去除电极接触不良引起的脉冲尖峰 sig = medfilt1(sig, 10); % 步骤4: 0.1~60Hz 带通滤波,把信号限制在 EEG 有效频段内 d4 = designfilt('bandpassiir', 'FilterOrder', 20, ... 'HalfPowerFrequency1', 0.1, 'HalfPowerFrequency2', 60, ... 'SampleRate', fs); sig = filtfilt(d4, sig);

这里四个步骤的顺序是有讲究的。陷波放最前面,是因为工频干扰幅度很大,不先滤掉会让后面的中值滤波把它当成脉冲噪声来处理。重参考放在滤波中段,是因为平均参考计算的是全电极均值,如果信号里还带着工频干扰,均值本身就不干净。中值滤波去的是尖峰,带通滤波去的是带外漂移,两者一先一后,前面的负责"去毛刺",后面的负责"划范围"。

一个落地时要注意的坑:designfilt的 20 阶带通滤波器在某些版本的 MATLAB 里会出现数值不稳定警告。这不是你的错,是滤波器阶数太高导致的。解决办法是降低阶数到 8 到 10 阶,或者改用filtfilt做零相位滤波,效果差别不大。原论文给的 20 阶是理想参数,实际复现时可以微调,只要通带边界不变就行。

3.2 频带分解:8 层 DWT 的层号与频率折算

预处理做完,信号还是整段的时域波形,需要把 EEG 的五个经典频带拆出来:delta(1-3Hz)、theta(4-7Hz)、alpha(8-13Hz)、beta(14-30Hz)、gamma(31-60Hz)。原论文用的是 8 层 DWT 离散小波分解,小波基选 db8。DWT 的好处是能把信号逐层二分,每一层对应一个子频带,比单纯用滤波器组计算量小,而且时频局部化特性好。

% 8 层 DWT 分解,小波基 db8 [C, L] = wavedec(sig, 8, 'db8'); % 各层细节系数对应的频带需要按采样率折算 fs = 500; % 以 DEAP 为例 for level = 1:8 low = fs / (2^(level+1)); high = fs / (2^level); fprintf('Level %d: %.1f - %.1f Hz\n', level, low, high); end % 按折算后的频带范围,选择对应层重建五个频带 gamma = wrcoef('d', C, L, 'db8', 1); % 高频细节层 beta = wrcoef('d', C, L, 'db8', 2); alpha = wrcoef('d', C, L, 'db8', 3); theta = wrcoef('d', C, L, 'db8', 4); delta = wrcoef('a', C, L, 'db8', 5); % 较深层的近似系数

代码里的for循环是关键,它把每一层小波系数对应的频率范围算出来。以 500Hz 采样率为例,第 1 层细节系数对应 125-250Hz,第 2 层对应 62.5-125Hz,第 3 层对应 31.25-62.5Hz,逐层向低频走。所以"8 层分解得到五个频带"并不是简单地把第 8 层拆开就有 delta,而是要根据采样率选层、必要时把相邻层合并。如果你复现时发现某个频带的特征特别乱,九成是层号选错了。

这里要给一句实话:原论文声称直接做 8 层 db8 分解就得到五个频带,但严格按采样率折算,500Hz 信号的 8 层分解并不能恰好把 1-60Hz 切成论文里那五个边界。实际落地时通常先把信号降采样到 128Hz,再做 5 层左右的 DWT,频带对应关系才干净。你可以保留论文的写法,但在报告中加一句"层号按采样率折算后微调",评审不会追问,反而会觉得你做过验证。

3.3 34 维特征怎么凑:时域 12 + 频域 20 + 非线性 2

特征提取是决定分类上限的一步。原论文的特征表列得很清楚:时域统计特征加 Hjorth 参数共 12 个,五个频带每个算 4 个频域特征共 20 个,再加上 Hurst 指数和排列熵 2 个非线性特征,总共 34 维。每个通道独立计算这份特征向量,所以 DEAP 上每个通道的特征矩阵是 880×34,SEED-IV 上是 742×34。

特征类别具体特征数量
时域统计均值、均方根、标准差、一阶差分、归一化一阶差分、二阶差分、归一化二阶差分、峰度、偏度、方差10
Hjorth 参数Mobility、Complexity2
频域特征(×5 频带)频带能量、功率谱密度、微分熵、平均频带功率20
非线性特征Hurst 指数、排列熵2

时域特征里最容易忽略的是 Hjorth 参数。Mobility 是信号一阶导数和原信号的方差比,反映信号的频率活动强度;Complexity 是二阶导数和一阶导数的 Mobility 之比,反映信号的"复杂度"。这两个参数在情绪分类里经常有效,因为它们跟脑电的节律变化直接相关——紧张时 beta 活动增强,信号复杂度会变。

频域特征里的微分熵(Differential Entropy)值得单独说。它本质上是功率谱密度对数的积分,在 EEG 情绪识别里被反复验证过有效,因为不同情绪状态下脑电能量会从一个频带迁移到另一个频带,而微分熵对这种"能量分布形状"的变化比单纯的能量值更敏感。四个频域特征不是同一件事的不同写法:频带能量反映幅度,功率谱密度反映频率成分强度,平均频带功率反映单位频率的功率,微分熵反映分布的不确定性。组合在一起,才能覆盖情绪变化在频域上的不同表现。

4. 通道级 SVM 与融合投票:32 个分类器如何得出最终情绪

4.1 为什么把分类器拆到通道级而不是全通道拼接

这是一个看起来反直觉但实际很有效的设计。直觉做法是把 32 个通道的 34 维特征拼成一个 1088 维的大向量,丢给一个 SVM。原论文没有这么做,而是每个通道单独训练一个 SVM,得到 32 个分类器,最后一层做通道融合。为什么?因为 EEG 是高度空间相关的信号,相邻电极的信息大量冗余,直接拼接会造成特征维度爆炸,而样本量只有几百条,RBF 核 SVM 在"高维小样本"下非常容易过拟合。

通道级建模的另一个好处是可视化。每个通道分类器的准确率摊开一看,能立刻看出哪些脑区对情绪分类贡献大。比如前额叶通道的准确率通常高于枕叶通道,因为情绪加工主要涉及额叶皮层。答辩时这张"通道准确率热力图"比一个总准确率数字有说服力得多。原论文的数据划分也印证了这一点:DEAP 用 22 人 880 个样本训练,每个通道的特征矩阵独立输入,32 个分类器互不干扰,最后融合时各投一票。

通道融合的方式原论文没有展开,常见做法有两种:多数表决,或者把 32 个分类器的预测概率平均后取 argmax。多数表决实现简单,但对弱分类器一视同仁;概率平均会给置信度高的通道更大权重。我建议你用概率平均,因为有些通道的分类器天生就弱,硬投票会拉低整体准确率。

4.2 SVM 训练与通道融合代码实战

用 Python 的 scikit-learn 实现这部分非常直接。关键点是标准化必须在训练集上拟合,再应用到测试集,不能整份数据一起算均值,否则会有信息泄漏,准确率虚高。

from sklearn.svm import SVC from sklearn.preprocessing import StandardScaler import numpy as np # 每个通道独立训练 # X_ch: 该通道的特征矩阵,shape = (样本数, 34) # y: 四类标签,编码为 0~3(对应 HAHV, HALV, LALV, LAHV) channel_clfs = [] channel_scalers = [] for ch in range(32): X = all_features[:, ch, :] # 取出第 ch 个通道的所有样本特征 scaler = StandardScaler() X_scaled = scaler.fit_transform(X) clf = SVC(C=1.0, kernel='rbf', gamma='scale', decision_function_shape='ovo', probability=True) clf.fit(X_scaled, y_train) channel_clfs.append(clf) channel_scalers.append(scaler) # 测试阶段:逐通道预测概率,累加后取平均 prob_sum = np.zeros((X_test.shape[0], 4)) for ch in range(32): X_ch_scaled = channel_scalers[ch].transform(all_features[:, ch, :]) prob_sum += channel_clfs[ch].predict_proba(X_ch_scaled) final_pred = np.argmax(prob_sum, axis=1)

这段代码里值得注意的参数有四个。C=1.0是正则化系数,越大越容易过拟合,调参时优先试 0.1 到 10 的范围;kernel='rbf'对应非线性分类,原论文特别提到要选正确的核和 gamma;gamma='scale'让 scikit-learn 根据特征维度自动初始化 gamma,避免手设一个离谱值;decision_function_shape='ovo'是多分类内部的一对一策略,四类会拆成 6 个二分类器。如果你发现训练很慢,可以先只用 2 个通道跑通流程,再扩展到 32 个。

标准化这步是很多初学者翻车的地方。注意我把StandardScaler也按通道单独存了一份,测试时用训练时算好的均值方差去变换,而不是重新fit。如果你图省事在测试集上重新fit_transform,等于把测试集的信息混进了模型,得到的准确率是假的,答辩时一深问就露馅。

4.3 结果解读:DEAP 74%/86%/72%/84% 与 SEED-IV 79%/76%/77%/74%

原论文的四类分类结果可以直接做成一张对比表:

类别DEAP 准确率SEED-IV 准确率
HAHV(高唤醒高效价)74%79%
HALV(高唤醒低效价)86%76%
LALV(低唤醒低效价)72%77%
LAHV(低唤醒高效价)84%74%

解读这个结果比结果本身更重要。DEAP 上 HALV 和 LAHV 明显高于 HAHV 和 LALV,说明低唤醒类(LALV)和高唤醒正类(HAHV)更难分。原因通常是两类样本在特征空间里重叠度高——低唤醒的 calm 和高唤醒的 happy 在 frontal 通道的 beta 频带能量上并不总是拉开差距。SEED-IV 上四类准确率反而更均匀,因为它的标签是离散四类,采集时就直接对应四类情绪视频,类间间距更大。

答辩时被问"为什么不是所有类都到 90%"是很正常的。你可以把原因归结为三类:标签噪声(受试者主观打分不完全可靠)、特征冗余(34 维特征之间相关性高)、个体差异(不同人同一情绪的 EEG 模式不同)。这套解释既诚实,又能把话题引导到"未来怎么改进",比硬说模型好要稳。原论文整体准确率区间落在 72% 到 86%,在公开 EEG 情绪数据集上属于正常水平,深度学习方法泛化好的也能做到 80% 左右,但 SVM 的可解释性和可复现性明显更强,这正是它作为毕设/课设主模型的价值。

5. 常见问题与避坑排查:预处理、频带映射、样本划分中最容易翻车的地方

5.1 现象:四类准确率差距过大,某两类总在 70% 以下

排查时先看类别分布。DEAP 的标签是从 arousal/valence 连续值映射到四象限的,如果按原始打分的中位数切分,四个象限的样本数通常不是均匀的。举一个典型场景:受试者打分普遍偏高,导致 HAHV 类样本数远超其他类,SVM 的决策边界就会偏向多数类。原因大概率有两个:其一是原始评分分布偏移,其二是特征在某一类上没有区分度。

解决方法是先打印各类样本数,如果偏差超过 20%,就按类别重采样或给class_weight='balanced'。另一个更隐蔽的原因是特征冗余:34 个特征里如果同时放了"方差"和"标准差"这种高度线性相关的量,SVM 在 RBF 核下会放大噪声维度。我一般会先跑一遍随机森林看特征重要性,把贡献接近零的特征剔除掉再训练 SVM。

5.2 现象:滤波后信号变平或出现 NaN

这通常是filtfilt对整段信号做零相位滤波时,边缘效应导致的。filtfilt是双向滤波,信号首尾会补一段镜像数据,但如果原始信号里有 NaN 或 Inf,滤波器会把 NaN 扩散到整段。另一个常见原因是中值滤波的窗口设成了偶数,medfilt1对窗口边界的处理会异常。

解决分两步:加载数据后先检查是否有缺失值,用isnan(sum(sig,1))逐通道扫一遍;发现 NaN 的直接剔除该事件,不要强行插值。滤波器顺序也要确认,陷波必须在最前,如果先把信号带通到 0.1-60Hz,50Hz 附近的工频能量已经被削弱,陷波就失去了意义。原论文顺序是陷波→重参考→中值→带通,照抄不会出问题,怕的是自己随意调整顺序。

5.3 现象:DWT 分解后频带对不上

这是最典型的"论文重现翻车点"。原论文写的是"8-level DWT decomposition db8 to obtain 5 frequency bands",但前面我说过,层号和频率的关系取决于采样率。如果你在 SEED-IV 的 1000Hz 采样率下照搬 DEAP 500Hz 的层号,gamma 频带会整个错位。现象是:某个频带的特征曲线和另一个频带高度相似,或者 band energy 异常集中在某一层。

解决办法是用那一段频率折算循环代码,把每层对应的实际频率范围打印出来,然后手动选择与 delta/theta/alpha/beta/gamma 目标频带重合度最高的层。不要迷信论文的"8 层",论文作者很可能省略了降采样步骤。我自己复现时吃过这个亏,后来养成的习惯是把采样率、层号、频带边界三者的对应表直接写进报告附录,既证明做了验证,也方便别人复现。

5.4 现象:RBF 核 SVM 训练慢且结果随随机种子漂移

RBF 核要计算两两样本之间的核矩阵,复杂度是 O(n²)。DEAP 的 880 个训练样本还好,但如果把 32 个通道拼成一个大矩阵,变成 880×1088 维,核矩阵计算就会明显变慢。结果漂移的原因则可能是gamma没设好,或者数据划分时把同一个受试者的不同事件既放进了训练集又放进了测试集。

第一个解决思路是坚持通道级建模,不要贪图方便做全通道拼接,这能同时解决维度和速度问题。第二个思路是检查划分方式:DEAP 必须按受试者划分(22 人训练、10 人测试),绝不能把所有事件混在一起随机划分,否则同一受试者的脑电信号同时出现在训练和测试里,准确率会虚高到 90% 以上,这就是典型的信息泄漏。如果你发现自己的结果比论文还高出一大截,先怀疑划分别有问题,别高兴太早。

5.5 现象:DEAP 与 SEED-IV 的通道编号对不上

两套设备的电极位置都遵循 10-20 系统,但通道序号顺序可能完全不同。比如 DEAP 的第 1 通道可能是 Fp1,而 SEED-IV 的第 1 通道可能是 Fp1 的参考点或某个不常用的电极。如果直接用索引features[:, ch, :]取通道,就会把 Fp1 的特征算成另一个电极的。

解决方法是按电极名称对齐,而不是按通道序号对齐。下载数据时留意 mat 文件里的channel_names字段,先取两个数据库共有的电极名集合,再按名称排序重建统一通道顺序。我在仿真实例里踩过这个坑,当时 DEAP 和 SEED-IV 的准确率都正常,但对比两张通道热力图时发现"贡献最大的脑区"完全矛盾,排查了两天才发现是通道顺序错位。这个教训值一整章:通道对齐必须写在预处理的第一步,而不是最后一步。

6. 验收与答辩:如何把 74%~86% 的准确率讲成一份可信交付

6.1 验收三个维度:流程、指标、口径

拿到这份资源要验收的不是"模型准不准",而是"你能不能把它讲清楚"。我建议按三个维度验收。

第一是流程复现。从下载数据到跑出准确率,代码必须能一键执行,中间不要有手动改路径的步骤。最好做一个 shell 脚本或.m主文件,按 数据加载→预处理→特征提取→训练→测试→输出 的顺序跑完。评审不会看你的中间变量,但会看你的工程习惯。

第二是指标完整性。除了四类准确率,补一张混淆矩阵和每个通道的准确率热力图。混淆矩阵能揭示哪两类互相混淆,通道热力图能说明哪些脑区贡献大。这两张图比一个准确率数字更有说服力,也更容易成为答辩时的展示亮点。

第三是口径一致性。明确你的结果是怎么切分出来的:按受试者还是按事件?训练集和测试集有没有重叠?原论文是 22/10 和 32/13 的受试者级划分,如果你改成随机划分,数字再高也要做好被追问的准备。我建议直接在报告里写一句"采用受试者级独立划分,避免信息泄漏",这比藏着一个漂亮数字稳得多。

6.2 答辩演示脚本与追问预案

答辩演示的顺序不要从代码讲起,要从问题讲起。我的习惯是这么演示:先展示一张四象限情绪模型图,说清四类是什么;再展示预处理前后的一段波形对比,让评审直观看到滤波效果;接着展示 DWT 分解出的五个频带波形,说明层号和频率的对应关系;最后展示特征表和准确率表,收在对未来工作的讨论上。

追问预案要提前准备。评审大概率会问三个问题:为什么用 SVM 而不用深度学习?为什么两个数据库的准确率趋势不一致?你的结果能不能泛化到新受试者?这三个问题的回答逻辑分别是:样本量只有几百条,深度网络容易过拟合,而 SVM 在中小样本上边界更稳定;两个数据库的采集协议和标签定义不同,准确率差异来自数据本身而非模型缺陷;按受试者级划分本身就是对泛化能力的验证,SEED-IV 的多 session 设计进一步证明了跨天稳定性。

这段验收流程我是在仿真实例里吃过亏才总结出来的。当时我复现出来的准确率比论文还高,答辩前信心满满,结果评审一句"你的划分是不是有信息泄漏"直接把我问住了。从那以后我每次做完 EEG 分类实验,都会强制走一遍"受试者级划分、打印类别分布、检查通道对齐"这三件事,确认无误才敢拿数字出去讲。希望帮到你,这套方案按上面的顺序跑通,你的设计就能立得住。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进