我将我的训练集划分为分层 k 折,如下所示:
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%)。为什么会发生这种情况?
谢谢。
最佳答案
事实证明,StratifiedKFold 默认情况下不会打乱数据。因此,我需要将 shuffle 参数设置为 True:
n_folds = 10
skf = list(StratifiedKFold(y, n_folds, shuffle=True, random_state=SEED))
关于python - 最后分层 K 折性能独特,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43772781/