【问题标题】:How to run scikit's cross validation with several classifiers on the same folds如何在同一折叠上使用多个分类器运行 scikit 的交叉验证
【发布时间】:2015-07-23 15:09:46
【问题描述】:

我目前正在进行一项关于分类器性能比较的研究。为了评估这些性能,我正在计算我拥有的所有数据集上每个分类器的准确性、曲线下面积和平方误差。此外,我需要对一些分类器执行调优参数,以便在准确度方面选择最佳参数,因此需要进行验证测试(我选择了 20% 的数据集)。

有人告诉我,为了使这种比较更有意义,应该对每个分类器的相同集合执行交叉验证。

所以基本上,有没有一种方法可以使用 cross_val_score 方法,以便它始终在所有分类器的相同折叠上运行,或者我应该从头开始重写一些可以完成这项工作的代码?

提前谢谢你。

【问题讨论】:

  • CV 默认为 StratifiedKFold,用于 shuffle=False 的分类。所以你应该得到可重复的折叠。

标签: python machine-learning scikit-learn classification cross-validation


【解决方案1】:

cross_val_score 接受一个cv 参数,该参数代表您要使用的交叉验证对象。您可能需要StratifiedKFold,它接受shuffle 参数,该参数指定您是否要在对其运行交叉验证之前对数据进行洗牌。

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)

【讨论】:

    猜你喜欢
    • 2015-09-04
    • 2020-10-12
    • 2014-05-08
    • 2013-08-17
    • 2021-03-18
    • 2013-05-03
    • 2017-01-11
    • 2012-01-07
    • 2019-06-21
    相关资源
    最近更新 更多