我目前正在进行一项关于分类器性能比较的研究。为了评估这些性能,我正在计算我所有数据集上每个分类器的准确度,曲线下面积和平方误差。此外,我需要为某些分类器执行调整参数,以便在准确性方面选择最佳参数,因此需要进行验证测试(我选择了20%的数据集)。
有人告诉我,为了使这种比较更有意义,应该对每个分类器的相同集合执行交叉验证。
所以基本上,有没有办法使用 cross_val_score 方法,以便它始终在所有分类器的相同折叠上运行,或者我应该从头开始重写一些可以完成这项工作的代码?< / p>
提前谢谢。
答案 0 :(得分:1)
cross_val_score接受cv
参数,该参数表示您要使用的交叉验证对象。您可能需要StratifiedKFold,它接受shuffle
参数,该参数指定您是否要在对其运行交叉验证之前对数据进行随机播放。
cv
也可以是int,在这种情况下,StratifiedKFold
或KFold
对象将自动使用K = cv
创建。
从文档中可以看出,shuffle
默认为False
,因此默认情况下,它已经针对所有分类器在相同的折页上执行。
您可以通过在同一分类器上运行两次来测试它,以确保(您应该得到完全相同的结果)。
您可以自己指定:
your_cv = StratifiedKFold(your_y, n_folds=10, shuffle=True) # or shuffle=False
cross_val_score(your_estimator, your_X, y=your_y, cv=your_cv)