共计 1770 个字符,预计需要花费 5 分钟才能阅读完成。
Amigos 数据集概述
Amigos 是一个公开的多模态情感识别数据集,包含 EEG 信号、外周生理信号和面部视频数据。该数据集通过观看视频片段诱发情感状态,记录了 32 名被试的生理响应。主要特点包括:

- 数据组成:
- 14 通道 EEG(采样率 128Hz)
- 4 种基础情感标签(valence, arousal, dominance, liking)
-
每个被试约 40 分钟数据
-
典型应用:
- 情感状态分类
- 生理信号跨被试分析
- 多模态融合实验
常见痛点与解决方案
1. 数据格式处理
原始.edf 文件需要特殊工具读取,建议使用 MNE-Python 库:
import mne
def load_edf(file_path):
"""加载 EDF 文件并转换为 MNE 对象"""
try:
raw = mne.io.read_raw_edf(file_path, preload=True)
return raw
except FileNotFoundError:
print(f"文件 {file_path} 未找到")
return None
2. 预处理流程
标准 EEG 预处理包含以下关键步骤:
- 频带滤波(0.5-45Hz)
- 降采样至 64Hz
- 伪迹去除(ICA 或回归方法)
from mne.preprocessing import ICA
def preprocess(raw: mne.io.Raw) -> mne.io.Raw:
"""执行基础预处理"""
# 带通滤波
raw.filter(0.5, 45., fir_design='firwin')
# 降采样
raw.resample(64)
# ICA 去眼电
ica = ICA(n_components=15, random_state=97)
ica.fit(raw)
ica.exclude = [0, 1] # 通常前两个成分是眼电
return ica.apply(raw)
特征提取实战
功率谱密度 (PSD) 特征
import numpy as np
def extract_psd(raw: mne.io.Raw, epoch_len: float = 2.) -> np.ndarray:
"""提取频域特征"""
# 分段处理
epochs = mne.make_fixed_length_epochs(raw, duration=epoch_len)
# 计算 PSD
psds, freqs = mne.time_frequency.psd_array_multitaper(epochs.get_data(),
sfreq=raw.info['sfreq'],
fmin=4,
fmax=45
)
return psds.mean(axis=0) # 各频段平均功率
差分熵 (DE) 特征
def differential_entropy(data: np.ndarray) -> np.ndarray:
"""计算差分熵特征"""
var = np.var(data, axis=-1)
return 0.5 * np.log(2 * np.pi * np.e * var)
模型训练示例
使用提取的特征训练简单分类器:
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
# 假设已提取特征 X 和标签 y
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
clf = SVC(kernel='rbf', class_weight='balanced')
clf.fit(X_train, y_train)
print(f"测试集准确率: {clf.score(X_test, y_test):.2f}")
避坑指南
内存优化技巧
- 使用
preload=False延迟加载数据 - 分块处理大文件
- 使用 HDF5 格式存储中间结果
标签对齐问题
- 检查采样率是否匹配
- 使用
mne.annotations处理事件标记 - 验证时间戳一致性
延伸思考
- 如何设计跨被试的验证策略?留一被试法是否总是最优解?
- 当 EEG 信号与问卷标签出现矛盾时,应该相信哪类数据?
- 在多模态融合中,EEG 特征应该早期融合还是晚期融合?
建议尝试方向:
- 结合时域特征(如 Hjorth 参数)
- 测试不同频带划分对分类的影响
- 探索注意力机制在跨被试建模中的应用
通过本指南,希望帮助新人快速掌握 Amigos 数据集的核心处理流程。实际应用中建议从小样本开始验证流程,再扩展到全数据集。
正文完
