Scikit-learn中Kfold的ROC曲线.适用于分层Kfold,但显示Kfold的错误



我想使用 Kfold 交叉验证绘制 ROC 曲线。但是,scikit-learn页面上给出的代码适用于StratifiedKfold。因此,当我将StratifiedKfold改变Kfold时,它在情节中给了我None结果。可能是什么问题?

示例代码位于ScikitLearn

Kfold更改了StratifiedKfold,但它不起作用。

在切割折叠之前打乱数据:

cv = KFold(n_splits=6, shuffle=True)

解释:

StratifiedKFold切割折叠,使每个折叠中的类比例与整个数据集中的类比例大致相同。 Kfold 不会这样做,只是按照样本在数据集中出现的顺序从样本中剪切折叠。因此,您可能会也可能不会在所有折叠中获得所有当前类。在这种情况下或Iris数据集中,样本按类排序,这可以从目标y中看到:

array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])

因此,在 6 折拆分的情况下,大多数时候你只能得到一个折叠类,并且整个模型训练中断。洗牌允许 KFold 在每次折叠中拾取两个类,并且一切正常。

相关内容

  • 没有找到相关文章

最新更新