如何使用sklearn获得svd的U矩阵?

时间:2019-07-02 05:12:10

标签: python scikit-learn svd

我正在尝试使用sklearn从此video复制svd过程。

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_给出了Sigma。

svd.components_给出了VT

如何获得U矩阵?

1 个答案:

答案 0 :(得分:1)

看看源代码,您会发现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]]))