gpt4 book ai didi

python-2.7 - 如何在 scikit_learn 中的 KFold 中使用 shuffle

转载 作者:行者123 更新时间:2023-12-04 17:37:57 25 4
gpt4 key购买 nike

我正在使用 scikit-learn 提供的 KFold 函数运行 10 倍 CV,以选择一些内核参数。我正在实现这个(grid_search)过程:

1-pick up a selection of parameters
2-generate a svm
3-generate a KFold
4-get the data that correspons to training/cv_test
5-train the model (clf.fit)
6-classify with the cv_testdata
7-calculate the cv-error
8-repeat 1-7
9-When ready pick the parameters that provide the lowest average(cv-error)

如果我不在 KFold 生成中使用 shuffle,如果我重复相同的运行并且“最佳结果”是可重复的,我会得到非常相同的平均值(cv_errors)结果。
如果我使用随机播放,如果我多次重复相同的运行并且“最佳值”不可重复,我会得到不同的平均值(cv 错误)。
我可以理解我应该为每次 KFold 传递获得不同的 cv_errors,但最终平均值应该相同。
带 shuffle 的 KFold 是如何工作的?
每次调用 KFold 时,它都会打乱我的索引并生成训练/测试数据。它如何为“训练/测试”选择不同的折叠?它是否有一种随机方式来选择不同的折叠进行训练/测试?
任何情况下它对“洗牌”有利,而情况则不是?

最佳答案

如果 shuffle 为 True,则首先将整个数据打乱,然后拆分为 K-Fold。对于可重复的行为,您可以将 random_state 设置为例如整数种子 (random_state=0)。
如果您的参数依赖于 shuffle,这意味着您的参数选择非常不稳定。可能您的训练数据很少,或者您习惯使用很少的折叠(例如 2 或 3)。

如果您的数据以某种方式按类排序,“shuffle”主要有用,因为这样每个折叠可能只包含来自一个类的样本(特别是对于随机梯度体面的分类器,排序类是危险的)。
对于其他分类器,它应该没有区别。如果改组非常不稳定,则您的参数选择可能没有信息(又名垃圾)。

关于python-2.7 - 如何在 scikit_learn 中的 KFold 中使用 shuffle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12237127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com