sklearn库中 Kfold, RepeatedKFold,ShuffleSplit三者对比
KFold
X = np.arange(5)
ss = KFold(n_splits=4, shuffle=True)
for train_index, test_index in ss.split(X):
print("@@%s %s" % (train_index, test_index))
shuffle=True每次会随机划分
# 第一次
[0 2 3] [1 4]
[1 2 3 4] [0]
[0 1 2 4] [3]
[0 1 3 4] [2]
#第二次
[1 3 4] [0 2]
[0 1 2 4] [3]
[0 1 2 3] [4]
[0 2 3 4] [1]
# 指定random_state=1234
# 第一次
[2 3] [0 1 4]
[0 1 4] [2 3]
# 第二次
[2 3] [0 1 4]
[0 1 4] [2 3]
shuffle=False按顺序划分
[2 3 4] [0 1]
[0 1 3 4] [2]
[0 1 2 4] [3]
[0 1 2 3] [4]
RepeatedKFold
ss = RepeatedKFold(n_splits=4, n_repeats=2)
for train_index, test_index in ss.split(X):
print("%s %s" % (train_index, test_index))
重复 K-折交叉验证
# 第一次
[1 2 3] [0 4]
[0 1 2 4] [3]
[0 2 3 4] [1]
[0 1 3 4] [2]
[0 1 4] [2 3]
[0 2 3 4] [1]
[1 2 3 4] [0]
[0 1 2 3] [4]
#第二次
[1 2 3] [0 4]
[0 1 3 4] [2]
[0 1 2 4] [3]
[0 2 3 4] [1]
[1 2 4] [0 3]
[0 2 3 4] [1]
[0 1 3 4] [2]
[0 1 2 3] [4]
# 指定random_state=123
# 第一次
[0 2 4] [1 3]
[0 1 2 3] [4]
[1 2 3 4] [0]
[0 1 3 4] [2]
[1 2 3] [0 4]
[0 1 3 4] [2]
[0 1 2 4] [3]
[0 2 3 4] [1]
# 第二次
[0 2 4] [1 3]
[0 1 2 3] [4]
[1 2 3 4] [0]
[0 1 3 4] [2]
[1 2 3] [0 4]
[0 1 3 4] [2]
[0 1 2 4] [3]
[0 2 3 4] [1]
ShuffleSplit
X = np.arange(5)
ss = ShuffleSplit(n_splits=2)
for train_index, test_index in ss.split(X):
print("%s %s" % (train_index, test_index))
随机排列交叉验证
#第一次
[4 3 2 0] [1]
[3 0 2 4] [1]
#第二次
[4 1 0 3] [2]
[0 1 4 2] [3]
# 指定random_state=6
#第一次
[4 0 1 2] [3]
[1 4 0 2] [3]
#第二次
[4 0 1 2] [3]
[1 4 0 2] [3]