2017-09-20 115 views
0

我使用Python的sklearn.cross_decomposition.PLSRegressionsklearn PLSRegression - X的方差解释由潜矢量

有一种方法,以检索X解释方差的分数,即ř(X)执行的偏最小二乘回归,对于每个PLS组件?我正在寻找类似于R pls包中的explvar()函数的东西。不过,我也很感谢有关如何自己计算它的任何建议。

还有一个类似的question,有一个answer解释了如何得到Y的方差。我想,“Y方差”是在这种情况下要求的。这就是为什么我提出了一个新问题 - 希望这是O.K.

回答

1

我设法找到问题的解决方案。以下给出X在PLS回归后由每个潜在向量解释的方差分数:

import numpy as np 
from sklearn import cross_decomposition 

# X is a numpy ndarray with samples in rows and predictor variables in columns 
# y is one-dimensional ndarray containing the response variable 

total_variance_in_x = np.var(X, axis = 0) 

pls1 = cross_decomposition.PLSRegression(n_components = 5) 
pls1.fit(X, y) 

# variance in transformed X data for each latent vector: 
variance_in_x = np.var(pls1.x_scores_, axis = 0) 

# normalize variance by total variance: 
fractions_of_explained_variance = variance_in_x/total_variance_in_x