文章来源于"脑机接口社区"CCA典型关联分析原理与Python案例​mp.weixin.qq.com

Rose今天分享一下CCA的相关原理以及Python应用,CCA在EEG等脑电数据的特征提取中使用很多,很有必要熟悉其原理。

CCA典型相关分析

CCA(canonical correlation analysis)利用综合变量对之间的相关关系来反映两组指标之间的整体相关性的多元统计分析方法。它的基本原理是:为了从总体上把握两组指标之间的相关关系,分别在两组变量中提取有代表性的两个综合变量U1和V1(分别为两个变量组中各变量的线性组合),利用这两个综合变量之间的相关关系来反映两组指标之间的整体相关性。

1936年,Hotelling提出典型相关分析。考虑两组变量的线性组合, 并研究它们之间的相关系数p(u,v).在所有的线性组合中, 找一对相关系数最大的线性组合, 用这个组合的单相关系数来表示两组变量的相关性, 叫做两组变量的典型相关系数, 而这两个线性组合叫做一对典型变量。在两组多变量的情形下, 需要用若干对典型变量才能完全反映出它们之间的相关性。下一步, 再在两组变量的与u1,v1不相关的线性组合中, 找一对相关系数最大的线性组合, 它就是第二对典型变量, 而且p(u2,v2)就是第二个典型相关系数。这样下去, 可以得到若干对典型变量, 从而提取出两组变量间的全部信息。

典型相关分析的实质就是在两组随机变量中选取若干个有代表性的综合指标(变量的线性组合), 用这些指标的相关关系来表示原来的两组变量的相关关系。这在两组变量的相关性分析中, 可以起到合理的简化变量的作用; 当典型相关系数足够大时, 可以像回归分析那样, 由- 组变量的数值预测另一组变量的线性组合的数值。

原理描述

案例实现

# 导入工具包

import h5py

import rcca

import sys

import numpy as np

import cortex

zscore = lambda d: (d-d.mean(0))/d.std(0)

第一步:加载数据

请从CRCNS下载数据:http://crcns.org/data-sets/vc/vim-2以下分析假定该数据位于当前目录中名为“ data”的目录中。

data = []

vdata = []

numSubjects = 3

# subjects 是3个受试者列表.

subjects = ['S1', 'S2', 'S3']

# xfms 是Pycortex中变换名称的列表,该名称用于对齐每个受试者的功能和解剖数据。

xfms = ['S1_xfm', 'S2_xfm', 'S3_xfm']

dataPath ="./data/VoxelResponses_subject%d.mat"

for subj in range(numSubjects):

# 打开数据

f = h5py.File(dataPath % (subj+1),'r')

# 获取数据大小

datasize = (int(f["ei"]["datasize"].value[2]),int(f["ei"]["datasize"].value[1]),int(f["ei"]["datasize"].value[0]))

# 从Pycortex获取皮质面罩

mask = cortex.db.get_mask(subjects[subj], xfms[subj], type = 'thick')

# 获取该受试者的训练数据

data_subj = np.nan_to_num(zscore(np.nan_to_num(f["rt"].value.T)))

data.append(data_subj.reshape((data_subj.shape[0],)+datasize)[:, mask])

# 获取受试者的验证数据

vdata_subj = np.nan_to_num(zscore(np.nan_to_num(f["rv"].value.T)))

vdata.append(vdata_subj.reshape((vdata_subj.shape[0],)+datasize)[:, mask])

第二步:定义CCA参数

# 这里设置1e-4和1e2之间的一系列正则化值

regs = np.array(np.logspace(-4, 2, 10))

# 这里考虑3到10之间的成分数量

numCCs = np.arange(3, 11)

# 初始化cca模型

cca = rcca.CCACrossValidate(numCCs=numCCs, regs=regs)

第三步:对数据训练,分析并保存分析结果

"""

说明:

由于数据量大,此分析的计算量很大。

在笔记本中运行它会花费大量时间,因此建议对其进行并行化和/或在计算机群集上运行它,然后加载结果以进行可视化。

"""

# 利用cca训练数据

cca.train(data)

# 利用cca对验证数据进行验证

cca.validate(vdata)

# 计算方差,解释每个体素中的验证响应

cca.compute_ev(vdata)

# 保存分析结果

cca.save("./data/CCA_results.hdf5")

第四步:可视化分析结果

# 导入可视化工具包

%matplotlib inline

import matplotlib.pyplot as plt

# 导入Brewer色彩图以进行可视化

from brewer2mpl import qualitative

nSubj = len(cca.corrs)

nBins = 30

bmap = qualitative.Set1[nSubj]

f = plt.figure(figsize = (8, 6))

ax = f.add_subplot(111)

for s in range(nSubj):

# 绘制所有三个对象的所有体素之间的相关性直方图

ax.hist(cca.corrs[s], bins = nBins, color = bmap.mpl_colors[s], histtype="stepfilled", alpha = 0.6)

plt.legend(['Subject 1', 'Subject 2', 'Subject 3'], fontsize = 16)

ax.set_xlabel('Prediction correlation', fontsize = 20)

ax.set_ylabel('Number of voxels', fontsize = 20)

ax.set_title("Prediction performance across voxels", fontsize = 20)

# p <0.05时的显着性阈值(针对多次比较进行了校正)

# 重要性是使用渐近方法计算的(有关详细信息,请参见论文文本)

thresh = 0.0893

ax.axvline(x = thresh, ymin = 0, ymax = 7000, linewidth = 2, color = 'k')

ax.text(thresh+0.05, 5000, 'p<0.05', fontsize = 16)

ax.set_xticklabels(0.1*np.arange(-8, 11, 2), fontsize = 16)

ax.set_yticklabels(np.arange(0, 10000, 1000), fontsize = 16)

该图显示了皮质图上一个对象的跨学科预测结果,即预测的验证响应和实际的验证响应之间的相关性。不重要的相关性(p <0.05,已针对多个比较进行校正)设置为0。

import cortex

from matplotlib import cm

from copy import deepcopy

subj = 0

subjName = "S1"

subjTransform = "S1_xfm"

corrs = deepcopy(cca.corrs[subj])

# 将所有低于显着性阈值的体素设置为0

corrs[corrs

_ = cortex.quickflat.make_figure(cortex.Volume(corrs, subjName,

subjTransform,

cmap = cm.PuBuGn_r,

vmin = 0., vmax = 1.), with_curvature = True)

参考点击上面动图扫描二维码,关注我们

python 典型相关分析_CCA典型关联分析原理与Python案例相关推荐

  1. 典型相关分析(cca)原理_CCA典型关联分析原理与Python案例

    文章来源于"脑机接口社区" CCA典型关联分析原理与Python案例​mp.weixin.qq.com Rose今天分享一下CCA的相关原理以及Python应用,CCA在EEG等脑 ...

  2. 典型相关分析python实现_CCA典型关联分析原理与Python案例

    文章来源于"脑机接口社区"CCA典型关联分析原理与Python案例​mp.weixin.qq.com Rose今天分享一下CCA的相关原理以及Python应用,CCA在EEG等脑电 ...

  3. 典型相关分析 python_CCA典型关联分析原理与Python案例

    点击上面"脑机接口社区"关注我们 更多技术干货第一时间送达 Hello,大家好! Rose今天分享一下CCA的相关原理以及Python应用,CCA在EEG等脑电数据的特征提取中使用 ...

  4. CCA典型关联分析原理与Python案例

    点击上面"脑机接口社区"关注我们 更多技术干货第一时间送达 Hello,大家好! Rose今天分享一下CCA的相关原理以及Python应用,CCA在EEG等脑电数据的特征提取中使用 ...

  5. python开发跟淘宝有关联微_基于Python的Apriori和FP-growth关联分析算法分析淘宝用户购物关联度...

    关联分析用于发现用户购买不同的商品之间存在关联和相关联系,比如A商品和B商品存在很强的相关性,常用于实体商店或在线电商的推荐系统,例如某一客户购买A商品,那么他很有可能会购买B商品,通过大量销售数据找 ...

  6. python 频繁项集_关联分析之发现频繁项集--使用Apriori算法(1)

    从大规模数据集中寻找物品间的隐含关系被称为关联分析,最有名的案例应该是啤酒和尿布了.这些关系可以用两种方式来量化,一个是使用频繁项集,给出经常在一起出现的元素项:一个是关联规则,每条关联规则意味着元素 ...

  7. python实现守护进程_守护进程原理及Python实现

    守护进程原理及Python实现 守护进程,不依赖于终端,在后台运行的程序,通常称为daemon(ˈdiːmən或ˈdeɪmən). 一些常见的Linux软件通常都是已守护进程的方式运行,比如: ngi ...

  8. 基于python的数据爬取与分析_基于Python的网站数据爬取与分析的技术实现策略

    欧阳元东 摘要:Python为网页数据爬取和数据分析提供了很多工具包.基于Python的BeautifulSoup可以快速高效地爬取网站数据,Pandas工具能方便灵活地清洗分析数据,调用Python ...

  9. 关联分析——关联规则应用及案例

    数据挖掘最早使用的方法是关联分析,主要应用于零售业.其中最有名的是售货 篮分析,帮助售货商制定销售策略.数据挖掘是从海量的数据里寻找有价值的信息和数据.数据挖掘中常用的算法有:关联规则分析法(解决事件 ...

  10. Python入门买哪本书?分析6000本Python书籍告诉你答案!

    (图片来源于网络) 大家好,我是辰哥~ 上面这张图是今年9月TIOBE 统计编程语言排行榜, 可以看到Python已经跃居第二, 一旦超越c语言排名第一,将会成为编程语言发展史的一个重要时刻 现在也越 ...

最新文章

  1. bats-Bash自动化测试工具
  2. Nature:手机1秒生成3D全息图;MIT团队新作,索尼投钱支持
  3. 档案中级职称计算机需要考几个模块,2020年职称申报需要准备哪些档案资料?这些细节必须知道!...
  4. 第二周作业-停车场门禁控制系统的状态机
  5. php 过滤特殊字符和sql防注入代码以及xss攻击等
  6. 《3D Math Primer for Graphics and Game Development》读书笔记1
  7. 5G商用正式启动:最全套餐资费详情都在这里了
  8. java tinyradius使用_TinyRadius客户端java登录认证
  9. mysql 1129 错误Host is blocked because of many connection errors; unblock with 'mysqladmin flush-host
  10. MySQL备份shell_shell---mysql备份
  11. 知识推理——正向链接推理
  12. (九)青龙Tools 正式版/前端网页提交+后台管理/适用于所有场景/开饭开饭开饭 【2022年6月15日】【更新】
  13. Spark SQL原理及常用方法详解(二)
  14. 网络安全热门资料 精品工具——下载目录
  15. 工作流引擎添新丁:Flowable6.0发布
  16. Winform的内容
  17. 英文演讲文稿 java,英文演讲稿优秀范文五篇
  18. 双非二战一志愿上岸国科大杭州高等研究院经验
  19. Chrome浏览器插件-Fatkun安装和介绍
  20. 《首先打破一切常规》读书心得

热门文章

  1. libmodbus 封装成dll_Windows Visual Studio 2017 编译 libmodbus
  2. 光储直柔配电系统浅析
  3. 大文件编辑查看工具推荐:ultraedit、logviewer。文件太大notepad++等编辑工具无法打开解决办法
  4. 低频电子线路学习笔记
  5. 对话改写论文笔记(2021年初 )
  6. 大数据第一季--java基础(day5)-徐培成-专题视频课程
  7. 管家婆过账服务器无响应,管家婆软件分享辉煌版常见问题处理
  8. 单片机消抖c语言程序,单片机中按键消抖程序
  9. 前端项目开发流程(附思维导图PC)
  10. Ubuntu安装ssh服务详细过程