SVD不产生降维效果

运行以下代码:

from sklearn.decomposition import TruncatedSVDimport numpy as npX = 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]

我期望矩阵的每一行都能被降维到大小2,但实际上是整个矩阵被降维到了大小2。TruncatedSVD可以用来将数据集的每一行降维到大小2,而不是整个矩阵降维到大小2吗?


回答:

打印的是奇异而不是奇异向量。由于n_components=2,因此有两个奇异是合适的。

要获得转换后的输出,可以使用

  svd.transform(X)

或者将其变换回原始空间

  svd.inverse_transform(X)

最后一个步骤是必要的,以便在原始矩阵和转换后的矩阵之间进行任何统计比较。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注