草庐IT

表面肌电信号处理流程——基于肌电信号分类的特征抽取的设计

张xiao张 2023-07-03 原文

如图为表面肌电信号研究的一般流程,仅作参考。本文中主要在特征提取方面进行研究!

动动小手指,帮我投上一票:摄影比赛,复制链接在微信搜索框打开哦🌹🌹
http://h5.3431373334.hflw0tq.cn/app/rWVzkuCTZg#/player/11862

目录


前言

  我们的目标是通过肌电信号能够对所有的手的动作进行分类,同时还要降低分类的复杂度,分类精度可以通过增加通道的数量来提高,但这同时也增加了硬件的复杂性和计算时间,对于控制假肢的实时应用是不可取的。因此本研究针对特征-通道的最优数量使用了传统的方法:主成分分析法和支持向量机递归消除法,并提出了一种新的方法:相关性热力图法。本文中的特征抽取就是根据数据集中通道的数量(8个通道)通过方法提取为2个通道,这两个通道是对手部动作整体影响最大的,因此就可以用这两个通道进行动作的分类,有效地降低算法复杂度,提高整体效率。


一、采集表面肌电信号

  市面上通常有采集信号的电极,采集的是八通道、二通道等。本研究采用的数据集为公开数据集(八通道)。

二、特征提取

  特征提取分为特征选择和特征抽取,在这里研究的是特征抽取
  原因:
    ①降低时间的复杂度和空间复杂度
    ②当数据能有较少的特征进行解释,我们可以更好地解释数据,使得我们可以提取知识

1.主成分分析法

  主成分分析法(PCA)是一种降维的统计方法,它借助于一个正交变换,将其分量相关的原随机向量转化成其分量不相关的新随机向量,这在代数上表现为将原随机向量的协方差阵变换成对角形阵,在几何上表现为将原坐标系变换成新的正交坐标系,使之指向样本点散布最开的p个正交方向,然后对多维变量系统进行降维处理,使之能以一个较高的精度转换成低维变量系统,再通过构造适当的价值函数,进一步把低维系统转化成一维系统。

2.支持向量机递归消除法

  支持向量机递归特征消除(简称SVM-RFE)是由Guyon等人在对癌症分类时提出来的,最初只能对两类数据进行特征提取。它是一种基于Embedded方法。起初它是针对二分类方法提出的,多分类的SVM-RFE算法其实和两分类的SVM-RFE算法类似,只不过在处理多分类时,把类别进行两两配对,其中一类为正类,另一类为负类,这样需训练个分类器,这就是一对一的多分类拆分策略,变成了多个两分类问题,每个两类问题用一个SVM-RFE进行特征选择,利用多个SVM-RFE获得多个排序准则得分,然后把多个排序准则得分相加后得到排序准则总分,以此作为特征剔除的依据,每次迭代消去最小特征,直到所有特征都被删除。

3.相关性热力图

  热力图,又名相关系数图。根据热力图中不同方块颜色对应的相关系数的大小,可以判断出变量之间相关性的大小。两个变量之间相关系数的计算公式为:

ρ表示相关系数,Cov表示协方差,E表示数学期望均值。
相关系数越高,则变量之间的相关程度越高;相关系数越小,变量之间的相关程度低。


三.肌电信号分类

1.KNN算法

  KNN(K- Nearest Neighbor)法即K最邻近法,最初由Cover和Hart于1968年提出,该方法的思路非常简单直观:如果一个样本在特征空间中的K个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
  总体来说,KNN分类算法包括以下4个步骤:
    ①准备数据,对数据进行预处理 。
    ②计算测试样本点(也就是待分类点)到其他每个样本点的距离。
    ③对每个距离进行排序,然后选择出距离最小的K个点。
    ④对K个点所属的类别进行比较,根据少数服从多数的原则,将测试样本点归入在K个点中占比最高的那一类。

2.随机森林

  随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。Leo Breiman和Adele Cutler发展出推论出随机森林的算法。

3.支持向量机

  支持向量机(SVM)是一种基于有监督学习对数据进行分类的广义线性分类器。其决策极限是为学习样本求解的最大边缘超平面。
  支持向量机采用铰链损失函数来计算经验风险,并在解决方案系统中加入正则项来优化结构风险。它是一个具有稀疏性和鲁棒性的分类器。作为常用的核学习方法之一,支持向量机可以采用核方法进行非线性分类。

4.相关实验结果

PCA消除特征图:

相关性热力图相关系数:


  将三种特征选择方法分别进行实验,从上图看出,主成分分析法的第一二主成分即就是通道1与通道2占据大部分方差,大于60%。SVM_RFE实验得出通道2与通道8可以作为特征消除后的两个通道进行分析。相关性热力图中通道4与通道5的相关系数为0.78,而通道1与通道5的相关系数为0.13,因此,通道4与通道5两者之间的相关性比较接近,通道1与通道5之间的相关性相差较远,可以以这两个通道为目标进行分析。

特征消除法分类要素对比表:

  从表中可以看出,三种分类精确率表明:提出的新方法相关性热力图都比传统的方法:PCA、SVM_RFE两种方法的高,证明提出的方法是有用的。


四.根据分类结果识别动作

这一部分通常在机械手臂中实际应用,不做过多介绍。


总结

  本研究提出了一种特征抽取的方法,并针对此方法设计了三种算法来对肌电信号的特征进行抽取。文章中首先分析了肌电信号处理中常用的主成分分析法以及支持向量机特征消除法,并在这两种方法的基础上提出了分析肌电信号的新方法:相关性热力图的方法,这种方法不仅可以得出两种特征之间的低相关性,还能看出高相关性,在分析特征之间关系时,能够将高相关性的两个特征不重复分析。这三种方法通过对一种8通道肌电信号的特征提取,在经过KNN和随机森林和支持向量机三种算法分类,实验都表明:相关性热力图这种方法使得肌电信号的分类精度更高。

有关表面肌电信号处理流程——基于肌电信号分类的特征抽取的设计的更多相关文章

  1. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  2. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  3. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  4. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  5. Ruby-vips 图像处理库。有什么好的使用示例吗? - 2

    我对图像处理完全陌生。我对JPEG内部是什么以及它是如何工作一无所知。我想知道,是否可以在某处找到执行以下简单操作的ruby​​代码:打开jpeg文件。遍历每个像素并将其颜色设置为fx绿色。将结果写入另一个文件。我对如何使用ruby​​-vips库实现这一点特别感兴趣https://github.com/ender672/ruby-vips我的目标-学习如何使用ruby​​-vips执行基本的图像处理操作(Gamma校正、亮度、色调……)任何指向比“helloworld”更复杂的工作示例的链接——比如ruby​​-vips的github页面上的链接,我们将不胜感激!如果有ruby​​-

  6. ruby - Faye WebSocket,关闭处理程序被触发后重新连接到套接字 - 2

    我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d

  7. ruby - 如何使用 Ruby HTTP::Net 处理 404 错误? - 2

    我正在尝试解析网页,但有时会收到404错误。这是我用来获取网页的代码:result=Net::HTTP::getURI.parse(URI.escape(url))如何测试result是否为404错误代码? 最佳答案 像这样重写你的代码:uri=URI.parse(url)result=Net::HTTP.start(uri.host,uri.port){|http|http.get(uri.path)}putsresult.codeputsresult.body这将打印状态码和正文。

  8. ruby-on-rails - (Ruby,Rails) 基于角色的身份验证和用户管理...? - 2

    我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源

  9. ruby-on-rails - 使用 Ruby 正确处理 Stripe 错误和异常以实现一次性收费 - 2

    我查看了Stripedocumentationonerrors,但我仍然无法正确处理/重定向这些错误。基本上无论发生什么,我都希望他们返回到edit操作(通过edit_profile_path)并向他们显示一条消息(无论成功与否)。我在edit操作上有一个表单,它可以POST到update操作。使用有效的信用卡可以正常工作(费用在Stripe仪表板中)。我正在使用Stripe.js。classExtrasController5000,#amountincents:currency=>"usd",:card=>token,:description=>current_user.email)

  10. ruby - 在 Rakefile 中动态生成 Rake 测试任务(基于现有的测试文件) - 2

    我正在根据Rakefile中的现有测试文件动态生成测试任务。假设您有各种以模式命名的单元测试文件test_.rb.所以我正在做的是创建一个以“测试”命名空间内的文件名命名的任务。使用下面的代码,我可以用raketest:调用所有测试require'rake/testtask'task:default=>'test:all'namespace:testdodesc"Runalltests"Rake::TestTask.new(:all)do|t|t.test_files=FileList['test_*.rb']endFileList['test_*.rb'].eachdo|task|n

随机推荐