如何解决使用 shuffle=True 的“正常”k 折交叉验证和重复的 k 折交叉验证有什么区别?
谁能解释使用 shuffle 函数的“正常”k 折交叉验证之间的区别,例如
kf = KFold(n_splits = 5,shuffle = True)
和重复的 k 折交叉验证?他们不应该返回相同的结果吗?
很难理解其中的差异。
感谢任何提示。
解决方法
顾名思义,RepeatedKFold
是一个重复的 KFold
。
它执行 n_repeats
次。当 n_repeats=1
时,前者与 shuffle=True
时的后者完全相同。
它们不会返回相同的拆分,因为默认情况下 random_state=None
,也就是说,您没有指定它。
因此,他们使用不同的种子来(伪)随机打乱数据。
当它们具有相同的 random_state
并且重复一次时,则两者都导致相同的分裂。为了更深入地了解,请尝试以下操作:
import pandas as pd
from sklearn.model_selection import KFold,RepeatedKFold
data = pd.DataFrame([['red','strawberry'],# color,fruit
['red',['red',['yellow','banana'],'banana']])
X = data[0]
# KFold
for train_index,test_index in KFold(n_splits=2,shuffle=True,random_state=1).split(X):
print("TRAIN:",train_index,"TEST:",test_index)
# RepeatedKFold
for train_index,test_index in RepeatedKFold(n_splits=2,n_repeats=1,test_index)
您应该获得以下信息:
TRAIN: [1 3 5 7 8] TEST: [0 2 4 6 9]
TRAIN: [0 2 4 6 9] TEST: [1 3 5 7 8]
TRAIN: [1 3 5 7 8] TEST: [0 2 4 6 9]
TRAIN: [0 2 4 6 9] TEST: [1 3 5 7 8]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。