文章目录

  • 前言
  • 特征提取与模式识别简介
  • 10折交叉验证代码设计
  • 实验结果
  • 总结

前言

在脑电实验采集数据后,为探究脑电辨识算法的有效性,通常要划分训练集与测试集来验证,有留出法与交叉验证法等方法,本文旨在设计一段代码实现对所有数据进行划分训练集与测试集,进行交叉验证证明辨识算法有效性。本文代码参考链接: 某位大佬


特征提取与模式识别简介

本文通过共空间模式(CSP)来进行特征提取,取m=4,提取8维特征,分类是通过支持向量机(SVM)实现,通过matlab自带的fitcsvm训练一个分类器,能对八维特征分辨确认脑电数据所对应的意图。

10折交叉验证代码设计

代码如下(示例):

clc;
%%做实验获得的实验数据
load data1.mat;
load data2.mat;
load data3.mat;
load data4.mat;
%% 删除无用数据
data1=delect_event(EEG_change1);
data2=delect_event(EEG_change2);
data3=delect_event(EEG_change3);
data4=delect_event(EEG_change4);
%%对脑电数据进行处理
EEG1=data_tmp(data1);
EEG2=data_tmp(data2);
EEG3=data_tmp(data3);
EEG4=data_tmp(data4);EEG.x=cat(3,EEG1.x,EEG2.x,EEG3.x,EEG4.x);%拼接四次实验数据
EEG.y=[EEG1.y;EEG2.y;EEG3.y;EEG4.y;]%拼接四次实验标签
EEG.s=1000;
%% EEG.x格式为长度×导联数×实验次数
k=10;
m=4;groups = ismember(EEG.y,1); cvFolds = crossvalind('Kfold', groups, k);
cp = classperf(groups);
for i = 1:k                                  %# 每一次交叉验证testIdx = (cvFolds == i);                %# 获取测试集trainIdx = ~testIdx;                     %# 获取训练集(不是测试集的数据)%# train an SVM model over training instancesEEG_train.x=EEG.x(:,:,trainIdx);EEG_train.y=EEG.y(trainIdx,:);EEG_train.s=1000;EEG_test.x=EEG.x(:,:,testIdx);EEG_test.y=EEG.y(testIdx,:);EEG_test.s=1000; W=learnCSP(EEG_train);          %# 获取矩阵W,这是进行CSP特征提取的重要参数feature_train=extractCSPFeatures(EEG_train,W,m);%提取训练集特征feature_test=extractCSPFeatures(EEG_test,W,m);%提取测试集特征%% 训练模型svmModel = fitcsvm(feature_train, groups(trainIdx), ...'BoxConstraint',2e-1, 'KernelScale','auto');%# 用模型对测试集进行验证pred = predict(svmModel, feature_test);%# 评断模型的有效性及算法的准确率cp = classperf(cp, pred, testIdx);
end

更改k可以改为k折交叉验证,更改m可以提取2m特征,使用只需要将对应的实验数据修改即可。


实验结果

实验结果如下图所示:


可见10折交叉验证下,CSP加SVM的平均准确率为86.79%


总结

这段代码实现了对实验数据的10折交叉验证,不需要自己再手动进行分组划分训练集与测试集,可以更为快速有效得验证算法的准确率。

【脑电数据十折交叉验证】实现对数据自动划分训练集与测试集得出平均分类准确率相关推荐

  1. 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集

    机器学习 数据挖掘 数据集划分 训练集 验证集 测试集 Q:如何将数据集划分为测试数据集和训练数据集? A:three ways: 1.像sklearn一样,提供一个将数据集切分成训练集和测试集的函数 ...

  2. 周志华西瓜书3.4题——用十折交叉验证法和留一法估计对率回归的误差

    周志华西瓜书3.4题. 本文所编写的代码均使用python3.7进行调试,依靠的sklearn进行的实验. 第一步,导入iris数据集,数据集使用sklearn包里面自带的. from sklearn ...

  3. R语言选模型/用AIC BIC adjustRsq 十折交叉验证 LOOCV等验证/择参 以fama三因子模型和CAMP模型为例@[理科班的习习同学

    R语言选模型/用AIC BIC adjustRsq 十折交叉验证 LOOCV等验证/择参 以fama三因子模型和CAMP模型为例@理科班的习习同学 引入包与数据预处理 install.packages ...

  4. R语言惩罚逻辑回归、线性判别分析LDA、广义加性模型GAM、多元自适应回归样条MARS、KNN、二次判别分析QDA、决策树、随机森林、支持向量机SVM分类优质劣质葡萄酒十折交叉验证和ROC可视化

    最近我们被客户要求撰写关于葡萄酒的研究报告,包括一些图形和统计输出. 介绍 数据包含有关葡萄牙"Vinho Verde"葡萄酒的信息.该数据集有1599个观测值和12个变量,分别是 ...

  5. 十折交叉验证pythoniris_数据集的划分——交叉验证法

    本文作者:王 歌 文字编辑:戴 雯 技术总编:张 邯Python云端培训课程火热招生中~重大通知!!!爬虫俱乐部于2020年7月11日至14日在线上举行为期四天的Stata编程技术定制培训,招生工作已 ...

  6. C语言十折交叉验证,R随机森林交叉验证 + 进度条

    library(data.table) library(randomForest) data str(data) #交叉验证,使用rf预测sepal.length k = 5 data$id list ...

  7. 十折交叉验证pythoniris_python机器学习-交叉验证(cross-vaildation)

    K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一. 所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表. kNN算 ...

  8. K折交叉验证与模型评估

    K折交叉验证的原理 见 https://www.jianshu.com/p/284581d9b189 模型评估 当使用十折交叉验证时,每次训练集为90%的数据,测试集为10%的数据.用这10%数据,我 ...

  9. 在Mnist数据上使用k折交叉验证训练,pytorch代码到底怎么写

    前言 最近学到了K折交叉验证,已经迫不及待去实验一下他的效果是不是如老师讲的一样好,特此写下本文. 本文运行环境为:sklearn.pytorch .jupyter notebook k折交叉验证介绍 ...

  10. 机器学习代码实战——K折交叉验证(K Fold Cross Validation)

    文章目录 1.实验目的 2.导入数据和必要模块 3.比较不同模型预测准确率 3.1.逻辑回归 3.2.决策树 3.3.支持向量机 3.4.随机森林 1.实验目的 使用sklearn库中的鸢尾花数据集, ...

最新文章

  1. C指针7:指针作为函数返回值
  2. maven scala plugin 实现jvmArgs,执行过程原理解析笔记
  3. 001_Gson概述
  4. 13、创建触发器(CREATE TRIGGER)
  5. CEO 赠书 | 甲之蜜糖乙之砒霜,创新者也将成为守旧者
  6. python 图表 web_Web | Django 与 Chart.js 联用做出精美的图表
  7. 华为Mate30与大疆手机云台3_更便捷更从容,大疆DJI OM 4手机云台使用体验
  8. ReactiveCocoa简单介绍
  9. New directions in automated traffic analysis论文解读
  10. java WebService 异常
  11. 验证计算机能否正确添加到网络,常用的网络测试命令大全
  12. c++ primer plus 内存模型和名称空间
  13. Operation和OperationQueue详解
  14. jsp九大内置对象所属类及作用
  15. 三星android se,安卓小钢炮小米8 SE初体验!华为三星靠边站
  16. PPT:人工智能在物流与供应链中的应用
  17. VOCs废气处理设备-粤信环保
  18. python校园网站毕业设计开题报告
  19. espnet中的transformer和LSTM语言模型对比实验
  20. minigui[基础篇][11]—— 图标

热门文章

  1. 你觉得成都这类城市,哪方面发展最值得期待?
  2. protoc库的卸载与安装
  3. 电视盒子刷鸿蒙系统,家里的智能电视能装鸿蒙系统吗?鸿蒙系统有哪些优势?...
  4. 16种常用统计分析软件介绍
  5. 软件项目开发各阶段文档模板(参考)
  6. idea实现Tomcat热部署
  7. 格雷码和二进制的转换及典型例题(4bits格雷码计数器)
  8. Python Django项目-Django基本运行过程
  9. Scratch3.0 保存缩略图
  10. python 判断三角矩阵 pta