在功能选择中,我应该分别在训练和测试数据集上使用SelectKBest吗?

时间:2017-05-26 10:53:05

标签: machine-learning scikit-learn

我的问题是我应该先对整个数据集中的特征选择执行selectkbest sklearn函数,然后将数据集分成训练和测试集,还是应该在训练和测试数据集之后执行selectkbest已被分区?在第二个中,是否有可能为测试数据集选择不同的k特征而不是用于训练的特征?我对机器学习很陌生,最近才学会了一些关于特征选择的知识。

我在这里使用单变量特征选择示例来了解selectkbest - http://scikit-learn.org/stable/modules/feature_selection.html作为示例

1 个答案:

答案 0 :(得分:2)

从技术上讲,你应该将selectKbest放在训练集上,然后用适合的选择器“转换”测试集。这是因为您不应在训练过程的任何部分使用测试数据。

想象一下,在稍后阶段将模型应用于新数据。在这种情况下,您必须使用训练数据训练过的selectKbest模型“转换”这些数据。因此,这是更准确的性能估算的正确程序。

如果实施某些交叉验证方案,则应对每个CV折叠重复此过程,以便对分类器(或回归量)性能进行正确估计。