在未知测试集上使用 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)
我在 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)