Sklearn PCA:用于训练和测试的组件数量不同

Posted

技术标签:

【中文标题】Sklearn PCA:用于训练和测试的组件数量不同【英文标题】:Sklearn PCA: Different number of components for train and test 【发布时间】:2018-08-18 04:42:03 【问题描述】:

我正在使用 Sklearn 的 PCA 进行降维。我正在拟合和转换我的输入数据X,如下所示:

pca = PCA(n_components=0.9999)
final_X = pca.fit_transform(X)

这产生了 13 个特征。然后我将它应用到我的测试集:

test_X = pca.fit_transform(test_1)

它只产生 9 个特征,这在我进行预测时是有问题的。我将在具有 13 个特征的数据上进行训练,然后对具有 9 个特征的数据进行测试(不保证 9 个是 13 个特征的子集)。

我是否应该跟踪 PCA 选择的哪些功能,然后只保留那些?

如果是这样,我该怎么做?

谢谢!

【问题讨论】:

你不应该打电话给fit_transform()。你应该打电话给transform()。更多关于my answer 的类似问题。 【参考方案1】:

您应该在测试数据上使用transform 而不是fit_transform,以便trainingtesting 数据以相同的方式转换(通过相同的@987654323 @ 模型)。 test_X = pca.transform(test_1)

【讨论】:

以上是关于Sklearn PCA:用于训练和测试的组件数量不同的主要内容,如果未能解决你的问题,请参考以下文章