0

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

但是,一旦我训练了我的模型并获得了一个新的 test_file,它将只有 65 个基本特征,但我的模型预计其中有 100 个。

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

4

1 回答 1

3

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

scikit-learn 提供了一个实用程序,可以更轻松地管理多个步骤;它被称为管道。在您的情况下应该是这样的(通过make_pipeline助手):

pipe = make_pipeline(
    PolynomialFeatures(2), 
    SelectKBest(100), 
    LogisticRegression()
)
pipe.fit(X_train, y_train)
y_pred = pipe.predict(X_test)
于 2017-06-14T17:14:48.957 回答