Python中的典型相关分析与sklearn

man*_*anu 7 python matlab correlation scikit-learn

我正在尝试使用sklearn进行典型相关分析(CCA).我将从手册中包含的简单示例开始:

from sklearn.cross_decomposition import CCA
X = [[0., 0., 1.], [1.,0.,0.], [2.,2.,2.], [3.,5.,4.]]
Y = [[0.1, -0.2], [0.9, 1.1], [6.2, 5.9], [11.9, 12.3]]
cca = CCA(n_components=1)
cca.fit(X, Y)

X_c, Y_c = cca.transform(X, Y)
Run Code Online (Sandbox Code Playgroud)

据我所知,在cca.x_weights_中我得到了"规范系数",即原始X变量的线性组合(MATLAB返回的矩阵"A"和"B"的列).然而,"规范相关"在哪里,即应用由规范系数给出的变换时达到的最大相关性(即,MATLAB返回的矢量"r").是否有可能在Python中得到它?

idn*_*vid 1

您可以使用 的输出来计算相关性.transfrom。这可以使用 numpy 或 scipy 来完成。我更喜欢 scipy 的 stats 模块:

X_c, Y_c = cca.transform(X, Y)
import scipy.stats
corrcoef,p_value = scipy.stats.pearsonr(X_c,Y_c)
Run Code Online (Sandbox Code Playgroud)

显然,由于在您的情况下您没有足够的样本(即n < p+q),因此相关性为 1。