Отличие функции PLSSVD от svd в python sklearn - PullRequest
0 голосов
/ 09 июля 2020

Описание PLSSVD в skearn:

Просто выполните svd на матрице кросс-ковариации: X'Y.

Однако, когда я сравниваю его результат с np.linalg.svd (), я получил разные результаты, что меня смутило. Вот мой код:

from sklearn.cross_decomposition import PLSSVD
import numpy as np
X = np.array([[0., 0., 1.],[1.,0.,0.],[2.,2.,2.],[2.,5.,4.]])
Y = np.array([[0.1, -0.2],[0.9, 1.1],[6.2, 5.9],[11.9, 12.3]])
plsca = PLSSVD(n_components=2, scale=False)
X_c, Y_c = plsca.transform(X, Y)

u, s, vh = np.linalg.svd(np.dot(X.T, Y))
X_c = np.dot(X, u[:,0:2])
vh = vh.T
Y_c = np.dot(Y, vh[:,0:2])

Преобразованные результаты X_ c, Y_ c отличаются при использовании PLSSVD или np.linalg.svd. Не могли бы вы сказать мне, в чем эти различия? Большое спасибо!

...