Как я могу получить матрицу U для SVD с Sklearn? - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь воспроизвести процедуру svd из этого видео с помощью sklearn.

enter image description here

A = np.matrix([[5,5],[-1,7]])
A_padded = np.pad(A, (0,1), 'constant', constant_values=(0, 0))
svd = TruncatedSVD(n_components=2, n_iter=7, random_state=42)
svd.fit(A_padded)

svd.singular_values_ дает Сигму.

svd.components_ дает VT

Как я могу получить матрицу U?

1 Ответ

1 голос
/ 02 июля 2019

взгляните на исходный код, вы обнаружите, что TruncatedSVD основан на randomized_svd

from sklearn.utils.extmath import randomized_svd

randomized_svd(A, n_components=2,
                  n_iter=5,
                  random_state=0)

(array([[ 0.70710678,  0.70710678],
        [ 0.70710678, -0.70710678]]),
 array([8.94427191, 4.47213595]),
 array([[ 0.31622777,  0.9486833 ],
        [ 0.9486833 , -0.31622777]]))
...