/ / Dlaczego wyniki różnią się między Matlab a nauką scikit podczas korzystania z regresji PLS? - python, matlab, scikit-learn, regression

Dlaczego wyniki różnią się między programem Matlab a nauką scikit podczas korzystania z regresji PLS? - python, matlab, scikit-learn, regression

Używam PLSRegression.predict formie sklearn.cross_decomposition i plsregress z MATLAB (2014a), a wynik jest trochę inny. Jestem pewien, że użyłem tych samych komponentów i danych, ponieważ Matlab zawsze działa lepiej niż uczenie się scikit.

Pyton:

from sklearn.cross_decomposition import PLSRegression
pls = PLSRegression(n_components=8)
pls.fit(X_train, Y_train)
Y_pred = pls.predict(X_train)

Matlab:

[XL,YL,XS,YS,BETA,PCTVAR,MSE]=plsregress(X_train , Y_train ,8);
Yfit = [ones(size(X_train,1),1) X_train]*BETA;

Odpowiedzi:

1 dla odpowiedzi № 1

Wierzę, że scikit-learn używa algorytmu NIPALS dla PLS, podczas gdy MATLAB używa algorytmu SIMPLS. Prawdopodobnie dają nieco różniące się wyniki.

Zobacz stronę dokumentacji dla plsregress w MATLAB, z odniesieniem do algorytmu na dole. Nie mam wygodnego łącza do NIPALS, ale jest to algorytm Svante Wolda i dość szeroko opisany w Internecie.