使用 shuffle=True 的 "normal" k 折交叉验证和重复的 k 折交叉验证有什么区别?
What is the difference between a "normal" k-fold cross-validation using shuffle=True and a repeated k-fold cross-validation?
谁能解释一下使用随机播放函数的“正常”k 折交叉验证之间的区别,例如
kf = KFold(n_splits = 5, shuffle = True)
和重复的 k 折交叉验证?他们不应该 return 相同的结果吗?
很难理解其中的区别。
如有任何提示,我们将不胜感激。
顾名思义,RepeatedKFold
is a repeated KFold
。
它执行 n_repeats
次。当n_repeats=1
时,前者与shuffle=True
时的表现完全相同。
它们不return相同的拆分,因为默认情况下random_state=None
,也就是你没有指定它。
因此,他们使用不同的种子来(伪)随机打乱数据。
当他们有相同的 random_state
并且重复一次时,那么他们都领先相同的分裂。要更深入地了解,请尝试以下操作:
import pandas as pd
from sklearn.model_selection import KFold, RepeatedKFold
data = pd.DataFrame([['red', 'strawberry'], # color, fruit
['red', 'strawberry'],
['red', 'strawberry'],
['red', 'strawberry'],
['red', 'strawberry'],
['yellow', 'banana'],
['yellow', 'banana'],
['yellow', 'banana'],
['yellow', 'banana'],
['yellow', '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, random_state=1).split(X):
print("TRAIN:", train_index, "TEST:", 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]
谁能解释一下使用随机播放函数的“正常”k 折交叉验证之间的区别,例如
kf = KFold(n_splits = 5, shuffle = True)
和重复的 k 折交叉验证?他们不应该 return 相同的结果吗?
很难理解其中的区别。
如有任何提示,我们将不胜感激。
顾名思义,RepeatedKFold
is a repeated KFold
。
它执行 n_repeats
次。当n_repeats=1
时,前者与shuffle=True
时的表现完全相同。
它们不return相同的拆分,因为默认情况下random_state=None
,也就是你没有指定它。
因此,他们使用不同的种子来(伪)随机打乱数据。
当他们有相同的 random_state
并且重复一次时,那么他们都领先相同的分裂。要更深入地了解,请尝试以下操作:
import pandas as pd
from sklearn.model_selection import KFold, RepeatedKFold
data = pd.DataFrame([['red', 'strawberry'], # color, fruit
['red', 'strawberry'],
['red', 'strawberry'],
['red', 'strawberry'],
['red', 'strawberry'],
['yellow', 'banana'],
['yellow', 'banana'],
['yellow', 'banana'],
['yellow', 'banana'],
['yellow', '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, random_state=1).split(X):
print("TRAIN:", train_index, "TEST:", 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]