我正在尝试使用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获取所有奇异值?
答案 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])