2017-09-20 3 views
0

I sklearn.cross_decomposition.PLSRegressionsklearn PLSRegression - Varianz von X erläutert durch latente Vektoren

Gibt es eine Möglichkeit, eine Partial Least Squares Regression Python geführt, um den Bruchteil der erklärten Varianz für X, nämlich R (X) zum Abrufen, für jede PLS-Komponente? Ich suche nach etwas, das der Funktion explvar() aus dem Paket r pls ähnlich ist. Ich würde mich jedoch über Vorschläge freuen, wie ich es selbst berechnen kann.

Es gibt eine ähnliche question und es gibt eine answer, die erklärt, wie man die Varianz von Y. Ich denke, dass "Varianz in Y" ist, was in diesem Fall gefragt wurde. Deshalb habe ich eine neue Frage gestellt - hoffe, das ist O.K.

Antwort

1

Ich habe es geschafft, eine Lösung für das Problem zu finden. Das Folgende gibt den Varianzanteil in X an, der durch jeden latenten Vektor nach der PLS-Regression erklärt wird:

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 
Verwandte Themen