如何在同一折叠上运行scikit的交叉验证与多个分类器



我目前正在研究有关分类器表现比较的研究。为了评估这些性能,我正在计算我所有数据集中每个分类器的准确性,曲线下的区域和平方错误。此外,我还需要为某些分类器执行调谐参数,以便从精度上选择最佳参数,因此需要进行验证测试(我选择了20%的数据集)。

我被告知,为了使此比较更有意义,应在每个分类器的相同集上执行交叉验证。

基本上,是否有一种方法可以使用 cross_val_score 方法,以便它始终在所有分类器上运行在同一折叠上,或者我应该从scratch中重写一些可以完成此作业的代码?/p>

预先感谢您。

cross_val_score接受cv参数,该参数表示您要使用的交叉验证对象。您可能想要接受shuffle参数的stratifiedkfold,该参数指定是否要在运行交叉验证之前将数据调整。

cv也可以是一个INT,在这种情况下,将使用K = cv自动创建StratifiedKFoldKFold对象。

从文档中可以看出, 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)

相关内容

最新更新