SEED数据集预处理(MATLAB)

1.SEED数据集简介

参考链接:http://t.csdnimg.cn/7mMfGicon-default.png?t=N7T8http://t.csdnimg.cn/7mMfG


http://t.csdnimg.cn/4B7gOicon-default.png?t=N7T8http://t.csdnimg.cn/4B7gO

2.官网对数据集进行的处理

该数据集已经经过了官方的预处理,理论上可以直接使用。

        官方采用的预处理操作如下:

        1.数据下采样到200hz;

        2.0-75hz的带通滤波;

3.本人处理过程

根据China_information可知,15个电影片段共来自6部电影。对应三种情绪(积极、消极、中性)。有文件可知,积极情绪对应的标签为1,消极为-1,中性为0,

上图:一个mat文件(如:1_20131027.mat)包含15个数组mat文件(如:djc_eeg1),这15个mat文件的意思为,djc这个人观看15部电影的脑电信号

有这个文件China_information可知,

积极情绪对应:1、6、9、10、14脑电信号

消极情绪对应:3、4、7、12、15脑电信号

中性情绪对应:2、5、8、11、13脑电信号

第一步:依据情绪对应的脑电信号进行分割提取,这里我选的是每个脑电信号提取3分钟(即180秒),例如:djc_eeg1属于积极情绪提取前180s脑电,然后与同为积极情绪的djc_eeg6提取前180s进行拼接,djc_eeg9、djc_eeg10、djc_eeg14同理进行拼接,得到djc这个人的所有happy情绪,命名为djc_happy。然后剩余的人同理进行处理,最终得到15个类似“姓名缩写_happy”的文件

第二步: 得到的15个“姓名缩写_happy”文件,在进行拼接,即得到happy.mat文件(即seed数据集中15人的积极情绪文件)

第三步:对于消极情绪和中性情绪,同上处理。最终得到三个mat文件,happy、sad、neutral,即为积极、消极、中性的情绪文件

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
% Known encoding formats are the following FDSN codes: % 0: ASCII % 1: 16-bit integer % 2: 24-bit integer (untested) % 3: 32-bit integer % 4: IEEE float32 % 5: IEEE float64 % 10: Steim-1 % 11: Steim-2 % 12: GEOSCOPE 24-bit (untested) % 13: GEOSCOPE 16/3-bit gain ranged % 14: GEOSCOPE 16/4-bit gain ranged (untested) % 19: Steim-3 (alpha and untested) % % See also MKMSEED to export data in miniSEED format. % % % Author: Franois Beauducel % Institut de Physique du Globe de Paris % Created: 2010-09-17 % Updated: 2012-04-21 % % Acknowledgments: % Ljupco Jordanovski, Jean-Marie Saurel, Mohamed Boubacar, Jonathan Berger, % Shahid Ullah. % % References: % IRIS (2010), SEED Reference Manual: SEED Format Version 2.4, May 2010, % IFDSN/IRIS/USGS, http://www.iris.edu % Trabant C. (2010), libmseed: the Mini-SEED library, IRIS DMC. % Steim J.M. (1994), 'Steim' Compression, Quanterra Inc. % History: % [2012-04-21] % - Correct bug with Steim + little-endian coding % (thanks to Shahid Ullah) % [2012-03-21] % - Adds IDs for warning messages % [2011-11-10] % - Correct bug with multiple channel name length (thanks to % Jonathan Berger) % [2011-10-27] % - Add LocationIdentifier to X.ChannelFullName % [2011-10-24] % - Validation of IEEE double encoding (with PQL) % - Import/plot data even with file integrity problem (like PQL) % [2011-07-21] % - Validation of ASCII encoding format (logs) % - Blockettes are now stored in substructures below a single % field X.BLOCKETTES % - Add import of blockettes 500 and 2000 % - Accept multi-channel files with various data coding % [2010-10-16] % - Alpha-version of Steim-3 decoding... % - Extend output parameters with channel detection % - Add gaps and overlaps on plots % - Add possibility to force the plot % [2010-10-02] % - Add the input formats for GEOSCOPE multiplexed old data files % - Additional output argument with gap and overlap analysis % - Create a plot when no output argument are specified % - Optimize script coding (30 times faster STEIM decoding!) % % [2010-09-28] % - Correction of a problem with STEIM-1 nibble 3 decoding (one % 32-bit difference) % - Add reading of files without blockette 1000 with additional % input arguments (like Seismic Handler output files). % - Uses warning() function instead of fprintf().
SEED脑电数据集预处理主要包括以下步骤: 1. 导入数据:使用Python中的pandas库读取SEED脑电数据集的CSV文件,将数据存储到DataFrame中。 2. 数据清洗:删除无用的列和行,去除缺失值和异常值,确保数据的质量。 3. 信号滤波:使用滤波器对原始脑电信号进行预处理,去除高频和低频噪声。 4. 信号分割:将连续的脑电信号分割成一段段固定长度的小块,以便进行后续处理。 5. 特征提取:从每个小块中提取出有意义的特征,如功率谱密度、时域特征、频域特征等。 6. 数据标准化:对提取出的特征进行标准化处理,以消除不同特征之间的量纲差异,使得它们可以进行比较。 7. 数据降维:使用PCA等降维算法将高维特征映射到低维空间中,以减少数据的维度和复杂度。 8. 数据划分:将处理后的数据划分为训练集、验证集和测试集,以便进行模型训练和测试。 9. 数据保存:将处理后的数据保存到本地文件中,以便后续使用。 下面是使用Python代码实现SEED脑电数据集预处理的示例: ```python import pandas as pd import numpy as np from scipy import signal from sklearn.decomposition import PCA # 导入数据 data = pd.read_csv('SEED.csv') # 数据清洗 data.drop(['Unnamed: 0', 'id'], axis=1, inplace=True) # 删除无用的列 data.dropna(inplace=True) # 删除缺失值 data = data[(data['label'] == 1) | (data['label'] == 2)] # 只保留正常和精神异常的数据 # 信号滤波 fs = 256 # 采样频率 lowcut = 0.5 # 低通滤波截止频率 highcut = 30 # 高通滤波截止频率 order = 4 # 滤波器阶数 def butter_bandpass_filter(data, lowcut, highcut, fs, order): nyq = 0.5 * fs low = lowcut / nyq high = highcut / nyq b, a = signal.butter(order, [low, high], btype='band') y = signal.filtfilt(b, a, data) return y data['filtered'] = data['eeg'].apply(lambda x: butter_bandpass_filter(x, lowcut, highcut, fs, order)) # 信号分割 segment_length = 256 # 分段长度 segments = [] for i in range(0, len(data), segment_length): segment = data.iloc[i:i+segment_length] if len(segment) == segment_length: segments.append(segment) # 特征提取 def extract_features(segment): power, freqs = psd(segment['filtered'], fs=fs, nperseg=256, noverlap=128) mean_power = np.mean(power, axis=0) max_power = np.max(power, axis=0) min_power = np.min(power, axis=0) std_power = np.std(power, axis=0) skew_power = skew(power, axis=0) kurt_power = kurtosis(power, axis=0) features = np.concatenate([mean_power, max_power, min_power, std_power, skew_power, kurt_power]) return features X = np.array([extract_features(segment) for segment in segments]) y = np.array([segment['label'].iloc[0] for segment in segments]) # 数据标准化 from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # 数据降维 pca = PCA(n_components=10) X_pca = pca.fit_transform(X_scaled) # 数据划分 from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X_pca, y, test_size=0.2, random_state=0) # 数据保存 np.savez('SEED_processed.npz', X_train=X_train, y_train=y_train, X_test=X_test, y_test=y_test) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值