python - 最后分层 K 折性能独特

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

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

相关文章:

machine-learning - 使用特征作为输入与使用它在 SVM 上构建多台机器

python - 将大型 csv 转换为稀疏矩阵以在 sklearn 中使用

machine-learning - 监督学习中测试数据的目的?

python - 将文件上传到 FastAPI 时如何使用 HTML 复选框发送可选参数?

python - 使用 pyparsing 解析名称

Python:如何使用 asyncio 和巨大的 csv 文件从循环发送异步请求?

python - theano中的反卷积自动编码器

python - 在 Python 中使用自定义距离函数对任意对象进行聚类

python - ROC 下的 sklearn svm 区域小于 0.5 用于训练数据

python - 使用轮廓分数