在未知测试集上使用Select-K-best

我在sklearn中训练了一个逻辑回归分类器。我的基础特征文件有65个特征,现在通过考虑二次组合(使用PolynomialFeatures())将它们扩展到了1000个。然后我通过Select-K-Best()方法将它们减少到了100个。

然而,一旦我的模型训练完成,我得到一个新的测试文件,它只有65个基础特征,但我的模型期望有100个特征。

那么,当我不知道标签(这是Select-K-Best.fit()函数所需的)时,如何在我的测试集上应用Select-K-Best()方法呢?


回答:

你不应该在测试数据上再次拟合SelectKBest – 应该使用训练时已经拟合的同一个SelectKBest实例。也就是说,你应该只在测试数据上使用.transform方法,而不是.fit方法。

scikit-learn提供了一个工具,使管理多个步骤变得更加容易;它被称为Pipeline。在你的情况下,应该是这样的(通过make_pipeline辅助函数):

pipe = make_pipeline(    PolynomialFeatures(2),     SelectKBest(100),     LogisticRegression())pipe.fit(X_train, y_train)y_pred = pipe.predict(X_test)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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