Python中MNE库的EEG数据(PCA和ICA)预处理

2023-11-11

PCA/ICA是脑电数据预处理的一个步骤,一般放在带通滤波处理之后,个人理解PCA和ICA的作用基本一致,用于去除心电和眼电的影响。不过PCA是提取主要成分,相当于降维提取特征,ICA是分离独立成分,目前PCA和白化已经是ICA的标准化的预处理步骤了(用于降低计算量)。所以说只做ICA就可以了,因为这个过程也包括PCA了。

(有关PCA和ICA的关系:https://www.zhihu.com/question/28845451

 

MNE库中的PCA和ICA

MNE的官方给出了两个ICA的例子,以Compute ICA components on epochs为例打开看看咋用的。

看起来还比较简单,一句话就搞定了。

可是将该算法应用到自己数据集的时候遇到了一个问题,可能是由于ICA技术太成熟了,其fit函数入参只支持Raw、Epoch或者Evoked类型的。然鹅我们自己数据集很少会有电极的位置信息,会导致程序报错。

有没有函数能满足入参为纯数据的要求呢?这样我们就能分析不同的数据集了,MNE库中还真有这种用法。搜索ICA会找到一个相关的函数应用例子,在这个例子中有介绍另一种方法可以实现入参为纯数据的ICA。

本以为不会支持这种计算方式,打开后发现这里的使用方法还是比较高级的,虽然使用了sklearn库中的函数,不过好处是不用考虑数太多据格式方面的问题。

PCA的相关计算

ICA的相关计算

 

示例

https://mne.tools/stable/auto_examples/decoding/plot_decoding_unsupervised_spatial_filter.html?highlight=pca

上面链接的例子中有对应的完整源码,就不详细解释了,以BCI运动想象的公开数据集为例,尝试处理了下得到如下结果,对应的部分中间处理过程打包到了资料包中,这里采用pkl保存中间处理结果的方式,pkl中的数据是经过挑选后的,如果需要原始的数据集参考:https://blog.csdn.net/zhoudapeng01/article/details/103822321

文章中用到的资料包:https://download.csdn.net/download/zhoudapeng01/12287679

 

代码片段:

import mne
import pickle
from mne.decoding import UnsupervisedSpatialFilter
import matplotlib.pyplot as plt
import numpy as np
from sklearn.decomposition import PCA, FastICA

# 设置log输出等级
mne.set_log_level(False)

# 加载训练数据
with open(r'F:\BaiduNetdiskDownload\BCICompetition\BCICIV_2b_gdf\Train\CueLeftRight\trainData.pkl','rb') as f:
    epochsTrain = pickle.load(f)

# 绘制原始数据的epochs均值,也就是evoked
epochsTrain.average().plot()

# 获取训练数据(纯数据非epoch格式)
trainData = epochsTrain.get_data(['EEG:Cz', 'EEG:C3', 'EEG:C4'])

# 创建PCA的计算模型
pca = UnsupervisedSpatialFilter(PCA(3), average=False)
# 进行PCA处理
pca_data = pca.fit_transform(trainData)
# 将其转换为evoked类型并绘图
ev1 = mne.EvokedArray(np.mean(pca_data, axis=0),mne.create_info(3, 250, ch_types='eeg'), tmin=-0.2)
ev1.plot(show=False, window_title='ICA', time_unit='s')
plt.show()

# 创建FastICA的计算模型
ica = UnsupervisedSpatialFilter(FastICA(3), average=False)
# 进行ICA处理
ica_data = ica.fit_transform(trainData)

# 将其转换为evoked类型并绘图
ev2 = mne.EvokedArray(np.mean(ica_data, axis=0),mne.create_info(3,250, ch_types='eeg'), tmin=-0.2)
ev2.plot(show=False, window_title='ICA', time_unit='s')
plt.show()

 

从下图中可以看出PCA和ICA还是有很大差别的,很明显PCA后的各成分的幅值是由大到小的,有一种主次关系在里面。而ICA后的数据相对来说各成分的主次关系并不明显,体现的是独立成分的关系。

其中3个channel的数据

PCA的结果

ICA的结果

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python中MNE库的EEG数据(PCA和ICA)预处理 的相关文章

随机推荐

  • 魏副业而战:闲鱼无货源爆款热销产品推荐

    我是魏哥 与其在家躺平 不如魏副业而战 每天分享一个闲鱼技巧 今天给大家推荐一些闲鱼爆款 很多人做闲鱼过了新鲜期之后 觉得选品太难了 很羡慕那些月入过万每天爆单的人 那为什么别人能每天轻松卖出几十单 而自己却不知道上架什么产品呢 下面就告诉
  • 检查nacos是否正常启动

    可以通过以下几种方式检查nacos是否启动 查看nacos日志文件 启动nacos时 控制台会输出一些信息 可以查看控制台输出的信息 如果显示 Server startup in XXX ms 等字样 则说明nacos已经启动 查看端口是否
  • mybatis-plus 判断参数是否为空并作为查询条件

    方式一 在配置文件中加上全局配置 mybatis plus global config db config field strategy not empty 方式二 对某一字段单独进行判断非空 QueryWrapper
  • Stable Disffusion 采样器总结

    Stable Disffusion 采样器 1 Euler a Euler a 属于超快采样模式 采样10次 即可完成基本画面 但是继续提高采样步数 就基本脱离了提示词 是个插画 tag利用率仅次与DPM2和DPM2 a 环境光效菜 构图有
  • springcloud配置详解

    在这里插入代码片 1 版本信息 父项目 依赖管理 pom文件
  • git创建/合并分支原理

    来源 https blog csdn net abcnull article details 90288499 创建与合并分支简单原理 分支被合并可以被 d 删除 分支没有被合并 d 删除会出错 需要 D 强制删除 master分支 一个分
  • Mysql教程(一):Mysql数据模型和SQL语法分析

    Mysql教程 一 Mysql数据模型和SQL语法分析 1 Mysql数据模型 1 1 关系型数据库 RDBMS 概念 建立在关系模型基础上 由多张相互连接的二维表组成的数据库 特点 使用表存储数据 格式统一 便于维护 使用SQL语言操作
  • 宝塔使用composer安装laravel 时报错 The Process class relies on proc_open, which is not available on your PHP

    Symfony Component Process Exception RuntimeException The Process class relies on proc open which is not available on you
  • vue自定义全局组件(自定义插件)

    有时候我们在做开发的时候 就想自己写一个插件然后就可以使用自己的插件 那种成就感很强 博主最近研究element ui和axios的时候 发现他们是自定义组件 但是唯一有一点不同的是 在用element ui的时候是使用Vue use 语句
  • M35J型多普勒流量计使用说明书

    一 产品原理 产品有三个功能 测平均流速 测水深 测水温 并可显示断面流量 其中水温测量使用温度探头 温度探头不与水接触 紧贴仪器外包装材料顶部 需要置于水底一定时间后才能反映实际水温 测水温的目的是校正超声波在水中的速度 并修正压力传感器
  • CVPR 2021

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 本文转载自 AI人工智能初学者 Coordinate Attention for Efficient Mobile Network Design论文 https arx
  • Windows7(x64) 安装Python3.7.0

    日期 2018年8月8日 作者 Commas 注释 本文写Windows7 x64 安装Python3 7 0 讲述了基本的安装操作 同时也介绍了一些相关的基础知识 本文若有哪些地方写的有所纰漏 还望各位看客指出 谢谢 如果您想了解更多有关
  • ros调试IMU

    ROS与传感器教程 razor imu 9dof使用 新固件 说明 介绍如何使用razor imu 9dof m0 创客智造采购的产品已经刷好固件 可以跳过刷固件 进行测试即可 点击淘宝采购IMU板子 步骤 环境搭配和固件更新 imu板子通
  • Linux常用性能检测命令搜集

    我们在维护网站 管理后台时 经常遇到的问题比如 网络断开 磁盘剩余空间不足 CPU占用过高等等 针对这些问题事前预防总比事后处理要好 当系统出现问题时 我们更要能及时准确定位错误的原因 才能针对性地解决问题 下面搜集一些常用的系统命令及使用
  • 网络编程3——网络层复习(三次握手、四次握手、滑动窗口)

    bkg 一 分层模型结构 OSI七层模型 物 数 网 传 会 表 应 TCP IP 4层末次那个 网 链路层 网络接口层 网 传 应 应用层 http ftp nfs ssh telnet 传输层 TCP UDP 网络层 IP ICMP I
  • 关于textarea限制字数的总结

    在input标签中 只需要设置maxlength 200 即可 但是在textarea标签中 IE9及IE9以下浏览器是不支持的 IE10 IE11则支持 估计后续的版本应该都会支持 现在来说下怎么让大部分IE版本都支持textarea 标
  • MySQL:JDBC

    什么是JDBC JDBC Java DataBase Connectivity 称为 Java数据库连接 它是一种用于数据库访问的应用程序 API 由一组用Java语言编写的类和接口组成 有了JDBC就可以 用统一的语法对多种关系数据库进行
  • PID算法应用于室内温度控制的C语言实现

    我最近在学习PID算法 对此很感兴趣 所以与大伙分享下 有不足的地方欢迎指出 非常谢谢 PID算法的基本内容本篇博客就不做阐述了 网上有很多资料 文章的主题是用C语言实现PID算法 为了更好的理解 我采用软件模拟室内温度控制的方式与大伙分享
  • logback基本配置说明

    1 简介 logback继承自log4j 它是spring boot默认的日志集成框架 官网地址 https logback qos ch 2 spring boot默认日志框架 当我们启动spring boot项目的时候 没有进行任何日志
  • Python中MNE库的EEG数据(PCA和ICA)预处理

    PCA ICA是脑电数据预处理的一个步骤 一般放在带通滤波处理之后 个人理解PCA和ICA的作用基本一致 用于去除心电和眼电的影响 不过PCA是提取主要成分 相当于降维提取特征 ICA是分离独立成分 目前PCA和白化已经是ICA的标准化的预