dreamer数据集读取
时间: 2025-03-04 08:28:09 浏览: 114
### 如何在 Python 中读取 Dreamer 数据集并利用 Pandas 加载
为了处理像 Dreamer 这样的复杂结构化数据集,可以采用 `scipy` 来加载 `.mat` 文件中的 MATLAB 数据,并通过转换成适合的形式来使用 Pandas 处理。下面展示了具体实现方法:
#### 使用 Scipy 和 Pandas 读取和预处理 Dreamer 数据集
```python
import scipy.io as sio
import pandas as pd
import numpy as np
path = "E:/DREAMER.mat"
raw_data = sio.loadmat(path)
def extract_eeg_data(raw, participant_index=0, video_index=0, electrode_index=0):
"""
提取出特定参与者、视频以及电极下的 EEG 基线与刺激反应信号.
参数:
raw : dict
解析后的 .mat 文件内容
participant_index : int
参与者的索引位置
video_index : int
所观看视频片段的索引位置
electrode_index : int
被选中记录脑电信号的电极编号
返回值:
tuple of ndarrays: (baselines, stimuli)
"""
baselines = raw['DREAMER'][0, 0]['Data'][0, participant_index]['EEG'][0, 0]['baseline'][0, 0][video_index, 0][:, electrode_index]
stimuli = raw['DREAMER'][0, 0]['Data'][0, participant_index]['EEG'][0, 0]['stimuli'][0, 0][0, 0]
return baselines, stimuli
participant_idx = 0
video_idx = 0
electrode_idx = 0
base_signals, stimulus_responses = extract_eeg_data(raw_data, participant_idx, video_idx, electrode_idx)
df_base = pd.DataFrame(base_signals, columns=['Baseline_Signal'])
df_stimulus = pd.DataFrame(stimulus_responses, columns=[f'Stimulus_{i}' for i in range(stimulus_responses.shape[1])])
print(df_base.head())
print(df_stimulus.head())
# 将两个DataFrame保存为CSV文件以便后续分析
df_base.to_csv('baseline_signals.csv', index=False)
df_stimulus.to_csv('stimulus_responses.csv', index=False)[^1]
```
这段代码首先定义了一个函数用于从给定路径加载MATLAB格式的数据文件,并从中抽取指定参与者的基线(静息状态)和受试期间的大脑活动响应作为 NumPy 数组返回。接着创建了两个 Pandas 的 DataFrame 对象分别存储这些时间序列数据,并打印前几行查看结果是否正确无误。
最后一步则是将上述得到的时间序列数据导出至 CSV 文件方便进一步的研究工作。
阅读全文
相关推荐













