我的问题是我应该先对整个数据集中的特征选择执行selectkbest
sklearn函数,然后将数据集分成训练和测试集,还是应该在训练和测试数据集之后执行selectkbest
已被分区?在第二个中,是否有可能为测试数据集选择不同的k特征而不是用于训练的特征?我对机器学习很陌生,最近才学会了一些关于特征选择的知识。
我在这里使用单变量特征选择示例来了解selectkbest - http://scikit-learn.org/stable/modules/feature_selection.html作为示例
答案 0 :(得分:2)
从技术上讲,你应该将selectKbest放在训练集上,然后用适合的选择器“转换”测试集。这是因为您不应在训练过程的任何部分使用测试数据。
想象一下,在稍后阶段将模型应用于新数据。在这种情况下,您必须使用训练数据训练过的selectKbest模型“转换”这些数据。因此,这是更准确的性能估算的正确程序。
如果实施某些交叉验证方案,则应对每个CV折叠重复此过程,以便对分类器(或回归量)性能进行正确估计。