有没有办法用sklearn获得所有奇异值?

时间:2019-07-02 03:08:44

标签: machine-learning scikit-learn svd

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

首先,我尝试了这段代码

A = np.matrix([[5,5],[-1,7]])
svd = TruncatedSVD(n_components=2, n_iter=7, random_state=42)
svd.fit(A)

并收到此错误

ValueError: n_components must be < n_features; got 2 >= 2

这是合理的,因为A是(2,2)矩阵。

所以,我不得不修改n_components参数

A = np.matrix([[5,5],[-1,7]])
svd = TruncatedSVD(n_components=1, n_iter=7, random_state=42)
svd.fit(A)
svd.singular_values_
array([8.94427191])

实际上,还有另一个奇异值4.47213595,它被截断了。

是否可以使用sklearn获取所有奇异值?

1 个答案:

答案 0 :(得分:1)

填充矩阵A怎么样?

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_
array([8.94427191, 4.47213595])