我将训练集分成如下的分层k-fold:
n_folds = 5
skf = list(StratifiedKFold(y, n_folds, random_state=SEED))
for k, (train, test) in enumerate(skf):
X_train = X[train]
y_train = y[train]
X_val = X[test]
y_val = y[test]
clf.fit(X_train, y_train)
preds = clf.predict_proba(X_val)
前4次的分类准确度与预期一致。 最后一次折叠的准确性明显较差。
我尝试改变SEED和n_folds的值,在所有情况下,最后一次折叠总是最差的(5次折叠,大约3%)。为什么会这样?
谢谢。
答案 0 :(得分:1)
事实证明,StratifiedKFold默认情况下不会对数据进行混洗。因此,我需要将shuffle参数设置为True:
n_folds = 10
skf = list(StratifiedKFold(y, n_folds, shuffle=True, random_state=SEED))