【问题标题】:Should I put shuffle=True or False in sklearn KFold cross validation?我应该在 sklearn KFold 交叉验证中输入 shuffle=True 还是 False?
【发布时间】:2021-07-21 11:18:15
【问题描述】:

我正在使用 cross_val_scoreKFold 在我的数据集上研究一些 cross_validation 分数 特别是我的代码如下所示:

cross_val_score(estimator=model, X=X, y=y, scoring='r2', cv=KFold(shuffle=True))

我的问题是将shuffle=True 放在KFold 中是否是一种常见行为:如果我这样做,则 r2 分数的回报是:

[0.5934, 0.60432, 0.45689, 0.6875, 0.5678]

如果我输入 shuffle=False 它会返回

[0.3987, 0,4576, 0.3234, 0.4567. 0.3233]

我不希望用于迭代训练的相同点在下一次被重新考虑,最终得到交叉验证的乐观分数。我应该如何解释我使用@987654329 获得了更好的分数@?

【问题讨论】:

    标签: scikit-learn k-fold


    【解决方案1】:

    交叉验证的一般程序需要随机打乱数据集。

    如果数据本质上是无序的(即非时间序列),那么 shuffle = True 是正确的选择。

    注意:

    1. sklearn 中的 train_test_split 默认具有“shuffle = True”。

    进一步阅读:

    https://scikit-learn.org/stable/modules/cross_validation.html#a-note-on-shuffling

    https://www.kaggle.com/general/236904

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-28
      • 2018-08-27
      • 2020-02-01
      • 2018-05-07
      • 2021-05-29
      • 2012-12-31
      • 2020-04-06
      • 2019-09-06
      相关资源
      最近更新 更多