SVD无法产生缩小的尺寸

时间:2018-07-23 15:57:22

标签: python machine-learning scipy scikit-learn svd

运行以下代码:

from sklearn.decomposition import TruncatedSVD
import numpy as np
X = np.matrix('1 2 3 4 5; 3 4 5 6 7; 1 1 1 1 1; 2 3 4 5 6; 2 3 4 5 6')
svd = TruncatedSVD(n_components=2, n_iter=7, random_state=42)
svd.fit(X)
print(svd.singular_values_)

产生:

[19.32338258  1.26762989]

我希望矩阵的每一行都可以缩小大小,但是矩阵却可以缩小。是否可以使用TruncatedSVD以便将数据集的每一行缩小为2号,而不是将整个矩阵缩小为2号?

1 个答案:

答案 0 :(得分:1)

打印单数values而不是vectors。因为values = 2,所以具有两个奇异的n_components是合适的。

转换后的输出将通过

获得
  svd.transform(X)

或返回为原始空间

  svd.inverse_transform(X)

最后一个需要在原始矩阵和转换后的矩阵之间进行统计比较。