我目前正在研究有关分类器表现比较的研究。为了评估这些性能,我正在计算我所有数据集中每个分类器的准确性,曲线下的区域和平方错误。此外,我还需要为某些分类器执行调谐参数,以便从精度上选择最佳参数,因此需要进行验证测试(我选择了20%的数据集)。
我被告知,为了使此比较更有意义,应在每个分类器的相同集上执行交叉验证。
基本上,是否有一种方法可以使用 cross_val_score 方法,以便它始终在所有分类器上运行在同一折叠上,或者我应该从scratch中重写一些可以完成此作业的代码?/p>
预先感谢您。
cross_val_score接受cv
参数,该参数表示您要使用的交叉验证对象。您可能想要接受shuffle
参数的stratifiedkfold,该参数指定是否要在运行交叉验证之前将数据调整。
cv
也可以是一个INT,在这种情况下,将使用K = cv
自动创建StratifiedKFold
或KFold
对象。
从文档中可以看出, 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)