基于BCI competitionIV dataset2b 的脑电波图像分类任务

基于BCI competitionIV dataset2b 的脑电波图像分类任务

Chandery Lv1

实验整理版

本实验的所有数据和代码都:Chandery/GloveCNNLabforAIGroup: An entire sources for the GloveCNNLab, submit to the repository for the later AIGroup members (github.com)

数据集介绍

BCI Competition IV (bbci.de)

本任务使用的数据集是dataset2b。

标签

标签分为两类

  • 左手
  • 右手

特征

  • 特征包括6520 trials
  • 形状维(6520, 6, Xlen)

其中

  • Average(Xlen)=3286
  • Max(Xlen)=18633

原官方数据格式为官方自制格式,需要官方工具进行处理,上面提供的是处理过后的mat格式,可以直接使用。

数据处理

  • nan初始化为0
  • 所有特征都resize为(6, 18633)的特征矩阵(不足的补0),相当于对特征进行覆盖。
  • 记录valid_len,有效长度
  • 数据归一化使用max-min归一化(只对有效长度进行归一化)

image

image

数据处理遇到的问题

关于ndarray的resize

第一种写法

1
2
3
a = np.array([[1,2,3],[4,5,6]])
a.resize(3,3)
a
1
2
3
[[1,2,3],
[4,5,6],
[0,0,0]]

我们可以发现当使用a.resize的写法的时候实现了在后面补零的工作

第二种写法

1
2
3
a = np.array([[1,2,3],[4,5,6]])
a = np.resize(a, (3,3))
a
1
2
3
[[1,2,3],
[4,5,6],
[1,2,3]]

可以看到,使用np.resize的时候对数组进行了堆叠

很显然,在本次任务中,我们用到的是第一种

关于python怎么导入mat格式的数据

在python中导入mat格式,使用到scipy.io库

1
2
import scipy.io as sio
file = sio.loadmat("./data.mat")

但是在python中导入mat文件会遇到一些问题,毕竟.mat文件是matlab的文件格式。在matlab中.mat文件有struct的数据类型,但是用scipy.io打开之后变为ndarray的类型,并没有struct的类型。因此对于struct我们需要使用这种方式打开:

1
2
3
4
5
6
7
8
pathtest = "BCI_IV2b_mat/B01T.mat"

file = sio.loadmat(pathtest)

print(type(file))
print(type(file["data"][0,0]))
print(file["data"]["X"]) #这种情况会报错
print(file["data"][0,0]["X"]) #这样写才能正常运行

代码搭建流程

由于这是我第一次完整搭建深度学习的代码,

  • Title: 基于BCI competitionIV dataset2b 的脑电波图像分类任务
  • Author: Chandery
  • Created at : 2024-06-21 23:11:53
  • Updated at : 2024-06-22 21:36:03
  • Link: https://chandery.chat/2024/06/21/基于BCI-competitionIV-dataset2b-的脑电波图像分类任务/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments