最后的分层K折叠性能不同

时间:2017-05-04 02:19:27

标签: python machine-learning scikit-learn cross-validation

我将训练集分成如下的分层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%)。为什么会这样?

谢谢。

1 个答案:

答案 0 :(得分:1)

事实证明,StratifiedKFold默认情况下不会对数据进行混洗。因此,我需要将shuffle参数设置为True:

n_folds = 10
skf = list(StratifiedKFold(y, n_folds, shuffle=True, random_state=SEED))