2017-09-20 3 views
0

I effectué une régression des moindres carrés partielle à l'aide sklearn.cross_decomposition.PLSRegression de pythonsklearn PLSRegression - variance de X expliquée par des vecteurs latents

Est-il possible de récupérer la fraction de la variance expliquée pour X, à savoir R (X), pour chaque composant PLS? Je cherche quelque chose de similaire à la fonction explvar() du paquet R pls. Cependant, j'apprécierais également toutes les suggestions sur la façon de le calculer moi-même.

Il y a un question similaire et il y en a un answer qui explique comment obtenir la variance de Y. Je suppose que la «variance de Y» est ce qui a été demandé dans ce cas. C'est pourquoi j'ai ouvert une nouvelle question - j'espère que c'est O.K.

Répondre

1

J'ai réussi à trouver une solution au problème. Ce qui suit donne la fraction de variance de X expliquée par chaque vecteur latent après la régression 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