如何从sklearn的CCA模块获得第一个规范关联?

Zpe*_*ugh 8 python scikit-learn

在scikit-learn for Python中,有一个带有规范相关分析(CCA)类的模块调用cross_decomposition.我一直在试图弄清楚如何给出形状(n,m)的2类多维向量并得到第一个典型相关系数.看一下文档,一个小例子脚本如下.

from sklearn.cross_decomposition import CCA
import numpy as np

U = np.random.random_sample(500).reshape(100,5)
V = np.random.random_sample(500).reshape(100,5)

cca = CCA(n_components=1)
cca.fit(U, V)

cca.coef_.shape                   # (5,5)

U_c, V_c = cca.transform(U, V)

U_c.shape                         # (100,1)
V_c.shape                         # (100,1)
Run Code Online (Sandbox Code Playgroud)

我真的不明白如何使用这个类来获得两个矩阵之间的第一个典型相关性,这就是我所需要的.它似乎通常针对分类和预测问题,但我只需要第一个典型相关系数而不是别的.我知道还有一些其他帖子与此类似,但问题仍然没有答案,最好的建议是改为MATLAB,这是一个非解决方案.任何帮助表示赞赏.

H. *_*ev. 3

给定变换后的矩阵U_cV_c,您确实可以像您一样检索规范分量相关性,更一般地对于具有n_compCC 的 CCA:

result = np.corrcoef(U_c.T, V_c.T).diagonal(offset=n_comp)
Run Code Online (Sandbox Code Playgroud)

现在,您不必tranform自己处理数据,至少在训练数据的拟合过程中已经完成了。分数CCA由 scikit-learn 存储在实例中,因此:

score = np.diag(np.corrcoef(cca.x_scores_, cca.y_scores_, rowvar=False)[:n_comp, n_comp:])
Run Code Online (Sandbox Code Playgroud)

n_comp将给出相同的结果,即与分数相对应的标量值向量,或每对规范组件之间的相关性。