deap dataset的不同分类模型的实现(1)
本教程是基于deap数据集的,涵盖了预测脑电信号的大多数传统机器学习算法和深度学习算法。
因为有很多关于DEAP数据集的研究,但它们很难比较。因此,作为一个EEG研究者,几乎不可能知道我应该做出什么样的架构决策。这是由于这样的事实:一些文章要么没有提供代码库因此无法复制,或者没有明确指定使用的hyperparameters,或仅仅由于显而易见的事实,即使是两篇论文使用相同的模型不能直接比较,因为不同的硬件和使用的hyperparameters。
我的目的是,我的硕士和博士学生可以使用它作为他们脑电研究的入门工具包。这些算法不一定能很好地用于EEG情绪识别,但为了完整起见,我将它们全部包括在内。
因此,我想对典型的脑电图模型进行受控比较,以清楚地了解什么有用,什么没用。
注意:在使用教程之前,请创建一个文件夹“data”,并下载预处理的DEAP数据集,并将s01.dat,…,s32.dat放在这个“data”文件夹中。数据文件夹将位于与教程相同的目录中。
本教程通过使用基准DEAP数据集中的情感识别作为案例研究,解释了基本的EEG分析以及常见的深度学习模型。
该库通过使用来自基准DEAP数据集的情感识别作为案例研究,比较了传统机器学习算法和深度学习算法的不同建模方法。
Python libraries:
- Python MNE
- PyTorch
- NumPy
- Sckit-Learn
- SciPy
Docker Prerequisite (Akraradet & Raknatee)
- Docker
- Docker-Compose
How to use
docker是为了使用与docker扩展的Visual Studio代码。这样我们就可以将“可视代码”附加到docker环境中。
一旦你“撰写”了服务,去docker标签,找到“eeg-emotion”。右键单击并选择“附加Visual Studio代码”。打开’ /root/projects/ ',并享受编码的乐趣。
docker-compose有两种类型。只支持CPU和GPU
- CPU
docker-compose -f docker-compose-cpu.yml up --build -d
- GPU
docker-compose -f docker-compose-gpu.yml up --build -d
Tutorials:
- (01.) Understanding the DEAP dataset
- Common EEG feature engineering + machine learning
- (02.) spectrum + SVM (61%)
- (03.) asymmetry + SVM - Akraradet
- (04.) connectivity + SVM - Akraradet
- (05.) common spatial pattern + SVM - Akraradet
- (06.) phase coherence + SVM - Akraradet
- Baseline deep learning models (50 epochs)
- (07.) LSTM (71% acc)
- (08.) CNN1D + LSTM (92% acc)
- (09.) Spectogram + CNN2D
- CNN 2 layers - (87% acc)
- CNN 4 layers - (96% acc)
- Advanced (50 epochs)
- (10.) CNN1D + LSTM + General Attention
- Dot Product Attention (94% acc)
- Multiplicative Attention ( ) Fabby
- Additive Attention ( ) Babby
- Hierarchical Attention ( ) Fabby
- (11.) CNN1D + LSTM + Self Attention
- Using mean to combine (90% acc)
- Using sum to combine (91% acc)
- Using last state to combine (90% acc)
- (12.) CNN1D + LSTM + MultiHead Self Attention
- Using mean to combine (92% acc)
- Using sum to combine (92% acc)
- Using last state to combine (94% acc)
- (13.) ChannelNet ( ) Beau
- (14.) EEGNet ( ) Chaky
- (15.) Spatial–Temporal Self-Attention CNN ( ) New + Babby + Beau
- (10.) CNN1D + LSTM + General Attention
一些可能的结论:
- 仅LSTM较差(71%)。这是预期的,因为每个单独的样本只是一个单独的数据点。由于信号大多很长(1分钟内8064个样本),因此LSTM几乎不可能理解样本1(第一秒)和样本8064(最后60秒)之间的关系。
- 很明显,在LSTM之前应用CNN1D会产生巨大的改善(92%),这意味着CNN1D在平滑和卷积信号为LSTM更有意义的表示方面是有用的,从而解决了LSTM的长期依赖问题。
- 很明显,使用光谱图(96%)可以很好地捕捉时间和频率信息,因此CNN2D四层显示的精度更高。关于谱图的另一点是,它的参数相对较少,这进一步激发了它的使用。
需要注意的是,对于光谱图,我们尝试了不同的窗口大小和重叠大小。我们发现它的影响是非常小的,因此我们决定报道最好的准确性。我们选择窗口大小为采样率,重叠大小为采样率的一半。 - 对于CNN1D和CNN2D, maxpooling被证明是非常有用的,它缩小了样本的大小,从而加快了训练过程,同时也作为特征选择。无论如何,我们发现一个小小的警告,过多的maxpooling可能导致较差的结果,这可能是由于过多的向下采样,因此找到最优的maxpooling层是有用的。
- 很明显,在CNN1D + LSTM的基础上增加注意力会带来轻微的好处,增加大约2%的额外准确度(92 + 2%),就像在多头自我注意中看到的那样。但这种好处是不确定的,正如我们在单头自我关注中看到的那样。这表明,增加注意力应该是精心设计的。此外,增加的精度需要用大量增加的参数来证明。
- 多头注意力(94%)明显比单头注意力(91%)更好,这与《变形金刚》论文的建议一致。
- 值得尝试不同的约简方法(sum、mean、last),但结果可能并不直接。这可能是优先级较低的超参数之一。
deap dataset的不同分类模型的实现(1)相关推荐
- 一起运行脑电信号(EEG)源码(2)-deap dataset
第一肯定是搭建环境了 安装包,源码,数据集准备好. 在运行之前,先把环境平台搭好了,版本要对应.安装有问题也可以找我.软件安装包在这里,我用的版本在后面其他的自己搞: 链接:https://pan.b ...
- 从零开始构建基于textcnn的文本分类模型(上),word2vec向量训练,预训练词向量模型加载,pytorch Dataset、collete_fn、Dataloader转换数据集并行加载
伴随着bert.transformer模型的提出,文本预训练模型应用于各项NLP任务.文本分类任务是最基础的NLP任务,本文回顾最先采用CNN用于文本分类之一的textcnn模型,意在巩固分词.词向量 ...
- 分类模型的性能评估——以SAS Logistic回归为例(1): 混淆矩阵
跑完分类模型(Logistic回归.决策树.神经网络等),我们经常面对一大堆模型评估的报表和指标,如Confusion Matrix.ROC.Lift.Gini.K-S之类(这个单子可以列很长),往往 ...
- CV:基于Keras利用CNN主流架构之mini_XCEPTION训练情感分类模型hdf5并保存到指定文件夹下
CV:基于Keras利用CNN主流架构之mini_XCEPTION训练情感分类模型hdf5并保存到指定文件夹下 目录 图示过程 核心代码 图示过程 核心代码 def mini_XCEPTION(inp ...
- 数学建模_随机森林分类模型详解Python代码
数学建模_随机森林分类模型详解Python代码 随机森林需要调整的参数有: (1) 决策树的个数 (2) 特征属性的个数 (3) 递归次数(即决策树的深度)''' from numpy import ...
- 【小白学习tensorflow教程】一、tensorflow基本操作、快速构建线性回归和分类模型
@Author:Runsen TF 目前发布2.5 版本,之前阅读1.X官方文档,最近查看2.X的文档.tensorflow是非常强的工具,生态庞大. tensorflow提供了Keras的分支,这里 ...
- 【图像分类】如何使用 mmclassification 训练自己的分类模型
文章目录 一.数据准备 二.模型修改 三.模型训练 四.模型效果可视化 五.如何分别计算每个类别的精确率和召回率 MMclassification 是一个分类工具库,这篇文章是简单记录一下如何用该工具 ...
- cox风险回归模型参数估计_信用风险管理:分类模型和超参数调整
cox风险回归模型参数估计 The final part aims to walk you through the process of applying different classificati ...
- python tensorflow 文本提取_如何在tensorflow中保存文本分类模型?
阅读tensorflow documentation进行文本分类时,我在下面建立了一个脚本,用于训练文本分类模型(正/负).有一件事我不确定.如何保存模型以便以后重用?另外,如何测试我拥有的输入测试集 ...
- 【Pytorch神经网络理论篇】 34 样本均衡+分类模型常见损失函数
同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深 ...
最新文章
- Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)
- 综述|计算机视觉中的注意力机制
- 如何将自己写的verilog模块封装成IP核(二)
- 部署harbor1.2.0开启ldap验证
- 【数据结构与算法】之深入解析“回文数”的求解思路和算法示例
- Linux 链接文件讲解
- 在matlab中求协方差,matlab里面的求协方差函数
- swiper鼠标hover停止自动轮播_swiper滑块组件
- spring和jump区别,JUMP和CALL之间的区别
- MySQL 两个死锁样例
- WPF学习拾遗(三)TextBox焦点问题
- 浅析Linux系统入侵排查与应急响应技术
- flask基于保利威做视频认证
- 写bat文件,报系统找不到指定文件的处理方式
- 阿里云国际版建立云端数据库操作流程
- 双硬盘安装win10和linux双系统,双硬盘安装win10+ubuntu18心得
- Java-PTA USB接口的定义
- GateWay网关访问服务出现503的问题解决
- How to Pronounce PROBABLY
- 西门子哪款plc支持c语言,西门子PLC三种语言的区别