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