Last Stratified K-Fold 表现独特

Last Stratified K-Fold Performance Distinct

我将我的训练集划分为分层 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))