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
,以便training 和testing 数据以相同的方式转换(通过相同的@987654323 @ 模型)。 test_X = pca.transform(test_1)
【讨论】:
以上是关于Sklearn PCA:用于训练和测试的组件数量不同的主要内容,如果未能解决你的问题,请参考以下文章
为啥 sklearn 的训练/测试拆分加上 PCA 会使我的标签不正确?
训练和测试集中不同数量的特征 - 随机森林 sklearn Python
XGBoost 与 GridSearchCV、缩放、PCA 和 sklearn 管道中的 Early-Stopping