我是 scikits 和 svm 的初学者,我想检查几个问题。我有 700 个项目和 35 个功能的样本,我有 3 个类。我有一个数组 X,其中包含使用“preprocessing.scale(X)”缩放的样本和特征。第一步是找到合适的 SVM 参数,我正在使用带有嵌套交叉验证的网格搜索(请参阅http://scikit-learn.org/stable/auto_examples/grid_search_digits.html#)。我在“网格搜索”中使用了我所有的样本 (X)。在网格搜索期间,数据分为训练和测试(使用 StratifiedKFold)。当我得到我的 SVM 参数时,我执行分类,将我的数据分为训练和测试。可以在网格搜索中使用与实际分类期间使用的相同数据吗?
问问题
1985 次
2 回答
4
可以在网格搜索中使用与实际分类期间使用的相同数据吗?
可以使用这些数据来训练(拟合)分类器。由 完成的交叉验证StratifiedKFold
适用于在优化超参数(算法设置)时没有足够数据来支持验证集的情况。如果您懒得制作验证集拆分器并且想要依赖 scikit-learn 的内置交叉验证,您也可以使用 :)
在通过交叉验证找到最佳设置后,将在整个训练集上重新训练估计器的refit
选项。GridSearchCV
但是,将经过训练的分类器应用于网格搜索或训练的数据是没有意义的,因为您已经有了标签。如果你想对分类器进行正式评估,你应该从一开始就准备好一个测试集,在你完成所有网格搜索、验证和拟合之前不要再碰它。
于 2012-03-10T20:36:20.510 回答
0
我不是机器学习专家,但据我所知,交叉验证的优势在于它是过拟合安全的。因此,使用性能最好的分类器(根据 CV 结果)进行最终评估应该是完全可以的。
然而,问题是,为什么需要对已有标签的数据进行“真正的分类”?最终目标是什么(SVM 性能评估或分类)?
于 2012-03-10T17:08:48.250 回答