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

Using Select-K-best on unknown test-set

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

但是,一旦我训练了我的模型并得到了一个新的 test_file,它将只有 65 个基本特征,但我的模型需要 100 个。

那么,当我不知道 Select-K-[= 中所需的标签时,如何在我的测试集上应用 Select-K-Best() 方法17=]() 函数

您不应该在测试数据上再次拟合 SelectKBest - 使用与训练中相同(已经拟合)的 SelectKBest 实例。 IE。你应该只对测试数据使用 .transform 方法,而不是 .fit 方法。

scikit-learn 提供了一个实用程序,可以更轻松地管理多个步骤;它被称为 Pipeline. It should be something like that in your case (via make_pipeline helper):

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