千家信息网

CCA的相关原理以及Python应用是怎样的

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章为大家展示了CCA的相关原理以及Python应用是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。今天分享一下CCA的相关原理以及Python应用
千家信息网最后更新 2026年11月02日CCA的相关原理以及Python应用是怎样的

本篇文章为大家展示了CCA的相关原理以及Python应用是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

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

CCA典型相关分析

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


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

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

原理描述


案例实现

# 导入工具包import h6pyimport rccaimport sysimport numpy as npimport cortexzscore = 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 = h6py.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 inlineimport matplotlib.pyplot as plt# 导入Brewer色彩图以进行可视化from brewer2mpl import qualitativenSubj = len(cca.corrs)nBins = 30bmap = 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.0893ax.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 cortexfrom matplotlib import cmfrom copy import deepcopysubj = 0subjName = "S1"subjTransform = "S1_xfm"corrs = deepcopy(cca.corrs[subj])# 将所有低于显着性阈值的体素设置为0corrs[corrs

上述内容就是CCA的相关原理以及Python应用是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

变量 数据 分析 之间 典型 组合 线性 相关性 系数 原理 验证 指标 结果 两个 受试者 就是 可视化 综合 应用 训练 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网黑科技 深圳市人人互联网科技有限公司 亿人帮互联网科技有限公司 互联网科技公司起名 广州宏创互联网科技 深圳齐家互联网科技 广州互联网络科技有限公司 互联网 视角下的科技创新 天扬科技互联网广告 上海电发互联网科技有限公司 互联网汽车科技小镇 科技与互联网的利与弊 北京华百购互联网科技有限公司 广州恒生互联网科技有限 迪庆互联网科技招生 互联网科技公司营业执照怎么办理 互联网科技机房 唯美互联网科技 同城互联网络科技 黑龙江互联网科技公司 互联网最新的科技有限公司 华脉科技工业互联网产品 北京华百购互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 厦门千工互联网科技有限公司 呼和浩特新华互联网科技学院 科技互联网海报 伍佰万互联网科技怎么赚钱 萌小萌互联网科技河南有限公司 互联网科技企业文化
0