日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

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

發(fā)布時間:2025/3/20 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 典型相关分析(cca)原理_CCA典型关联分析原理与Python案例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章來源于"腦機(jī)接口社區(qū)"

CCA典型關(guān)聯(lián)分析原理與Python案例?mp.weixin.qq.com

Rose今天分享一下CCA的相關(guān)原理以及Python應(yīng)用,CCA在EEG等腦電數(shù)據(jù)的特征提取中使用很多,很有必要熟悉其原理。

CCA典型相關(guān)分析

CCA(canonical correlation analysis)利用綜合變量對之間的相關(guān)關(guān)系來反映兩組指標(biāo)之間的整體相關(guān)性的多元統(tǒng)計分析方法。它的基本原理是:為了從總體上把握兩組指標(biāo)之間的相關(guān)關(guān)系,分別在兩組變量中提取有代表性的兩個綜合變量U1和V1(分別為兩個變量組中各變量的線性組合),利用這兩個綜合變量之間的相關(guān)關(guān)系來反映兩組指標(biāo)之間的整體相關(guān)性。


1936年,Hotelling提出典型相關(guān)分析。考慮兩組變量的線性組合, 并研究它們之間的相關(guān)系數(shù)p(u,v).在所有的線性組合中, 找一對相關(guān)系數(shù)最大的線性組合, 用這個組合的單相關(guān)系數(shù)來表示兩組變量的相關(guān)性, 叫做兩組變量的典型相關(guān)系數(shù), 而這兩個線性組合叫做一對典型變量。在兩組多變量的情形下, 需要用若干對典型變量才能完全反映出它們之間的相關(guān)性。下一步, 再在兩組變量的與u1,v1不相關(guān)的線性組合中, 找一對相關(guān)系數(shù)最大的線性組合, 它就是第二對典型變量, 而且p(u2,v2)就是第二個典型相關(guān)系數(shù)。這樣下去, 可以得到若干對典型變量, 從而提取出兩組變量間的全部信息。

典型相關(guān)分析的實質(zhì)就是在兩組隨機(jī)變量中選取若干個有代表性的綜合指標(biāo)(變量的線性組合), 用這些指標(biāo)的相關(guān)關(guān)系來表示原來的兩組變量的相關(guān)關(guān)系。這在兩組變量的相關(guān)性分析中, 可以起到合理的簡化變量的作用; 當(dāng)?shù)湫拖嚓P(guān)系數(shù)足夠大時, 可以像回歸分析那樣, 由- 組變量的數(shù)值預(yù)測另一組變量的線性組合的數(shù)值。

原理描述

案例實現(xiàn)

# 導(dǎo)入工具包 import h5py import rcca import sys import numpy as np import cortex zscore = lambda d: (d-d.mean(0))/d.std(0)

第一步:加載數(shù)據(jù)

請從CRCNS下載數(shù)據(jù):http://crcns.org/data-sets/vc/vim-2以下分析假定該數(shù)據(jù)位于當(dāng)前目錄中名為“ data”的目錄中。

data = [] vdata = [] numSubjects = 3 # subjects 是3個受試者列表. subjects = ['S1', 'S2', 'S3'] # xfms 是Pycortex中變換名稱的列表,該名稱用于對齊每個受試者的功能和解剖數(shù)據(jù)。 xfms = ['S1_xfm', 'S2_xfm', 'S3_xfm'] dataPath ="./data/VoxelResponses_subject%d.mat" for subj in range(numSubjects):# 打開數(shù)據(jù)f = h5py.File(dataPath % (subj+1),'r')# 獲取數(shù)據(jù)大小datasize = (int(f["ei"]["datasize"].value[2]),int(f["ei"]["datasize"].value[1]),int(f["ei"]["datasize"].value[0]))# 從Pycortex獲取皮質(zhì)面罩mask = cortex.db.get_mask(subjects[subj], xfms[subj], type = 'thick')# 獲取該受試者的訓(xùn)練數(shù)據(jù)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])# 獲取受試者的驗證數(shù)據(jù)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參數(shù)

# 這里設(shè)置1e-4和1e2之間的一系列正則化值 regs = np.array(np.logspace(-4, 2, 10))# 這里考慮3到10之間的成分?jǐn)?shù)量 numCCs = np.arange(3, 11)# 初始化cca模型 cca = rcca.CCACrossValidate(numCCs=numCCs, regs=regs)

第三步:對數(shù)據(jù)訓(xùn)練,分析并保存分析結(jié)果

""" 說明: 由于數(shù)據(jù)量大,此分析的計算量很大。 在筆記本中運行它會花費大量時間,因此建議對其進(jìn)行并行化和/或在計算機(jī)群集上運行它,然后加載結(jié)果以進(jìn)行可視化。 """# 利用cca訓(xùn)練數(shù)據(jù) cca.train(data)# 利用cca對驗證數(shù)據(jù)進(jìn)行驗證 cca.validate(vdata)# 計算方差,解釋每個體素中的驗證響應(yīng) cca.compute_ev(vdata)# 保存分析結(jié)果 cca.save("./data/CCA_results.hdf5")

第四步:可視化分析結(jié)果

# 導(dǎo)入可視化工具包 %matplotlib inline import matplotlib.pyplot as plt# 導(dǎo)入Brewer色彩圖以進(jìn)行可視化 from brewer2mpl import qualitativenSubj = 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):# 繪制所有三個對象的所有體素之間的相關(guān)性直方圖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時的顯著性閾值(針對多次比較進(jìn)行了校正) # 重要性是使用漸近方法計算的(有關(guān)詳細(xì)信息,請參見論文文本) 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)

該圖顯示了皮質(zhì)圖上一個對象的跨學(xué)科預(yù)測結(jié)果,即預(yù)測的驗證響應(yīng)和實際的驗證響應(yīng)之間的相關(guān)性。不重要的相關(guān)性(p <0.05,已針對多個比較進(jìn)行校正)設(shè)置為0。

import cortex from matplotlib import cm from copy import deepcopy subj = 0 subjName = "S1" subjTransform = "S1_xfm" corrs = deepcopy(cca.corrs[subj]) # 將所有低于顯著性閾值的體素設(shè)置為0 corrs[corrs<thresh] = 0 _ = cortex.quickflat.make_figure(cortex.Volume(corrs, subjName, subjTransform, cmap = cm.PuBuGn_r,vmin = 0., vmax = 1.), with_curvature = True)

參考

腦機(jī)接口社區(qū):CCA典型關(guān)聯(lián)分析原理與Python案例

點擊上面動圖掃描二維碼,關(guān)注我們

總結(jié)

以上是生活随笔為你收集整理的典型相关分析(cca)原理_CCA典型关联分析原理与Python案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。