Проблемы с частичными наименьшими квадратами Y нагрузок и оценок - PullRequest
0 голосов
/ 16 июня 2020

Я изучаю, как работает алгоритм частичных наименьших квадратов (PLS), и нахожу некоторые проблемы с документацией, доступной для python.

В на этом веб-сайте из scikit узнать о реализации PLS, указано, что X = TP.t + Err и Y = UQ.T + Err

Однако, если я рассмотрю простой пример:

import numpy as np
from sklearn.cross_decomposition import PLSRegression
from sklearn.datasets import load_boston

boston = load_boston()

x = boston.data
x = x[:, [0, 2, 4, 5, 6, 7, 10, 11, 12]] # select non-categorical variables
x_center = x - x.mean(axis=0)
y = boston.target
y_center = y - y.mean(axis=0)

pls = PLSRegression(n_components=9, scale=False)
pls.fit(x, y)

# X COMPONENTS
p_pls = pls.x_loadings_
t_pls = pls.x_scores_
w_pls = pls.x_weights_
r_pls = pls.x_rotations_

# Y COMPONENTS
u_pls = pls.y_scores_
c_pls = pls.y_weights_
q_pls = pls.y_loadings_

# x = T*P.T
x2 = np.dot(t_pls, p_pls.T)
np.sum(x_center-x2 > 1e-5)
Out[39]: 0

Итак, здесь проверяется первое уравнение, X = TP.T. Но при проверке второго уравнения я вижу:

# y = U*Q.T
y2 = np.dot(u_pls, q_pls.T)
np.sum(y_center-y2 > 1e-5)
Out[42]: 163807

Итак, второе уравнение не проверено. Я что-то не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...