我正在使用 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-errors)。我可以理解,对于每个 KFold 通道,我应该得到不同的 cv_errors,但最终的平均值应该是相同的。带有 shuffle 的 KFold 是如何真正起作用的?每次调用 KFold 时,它都会打乱我的索引并生成训练/测试数据。它如何为“培训/测试”选择不同的折叠方式?它是否有随机方式来选择不同的折叠进行训练/测试?任何与“洗牌”有关的情况和不是的情况?