首页 文章

Scikit-learn:在GridSearchCV中得分

提问于
浏览
2

似乎scikit-learn的 GridSearchCV 收集其(内部)交叉验证折叠的分数,然后在所有折叠的分数中取平均值 . 我想知道这背后的理由 . 乍一看,相反收集其交叉验证折叠的预测,然后将所选的评分指标应用于所有折叠的预测似乎更灵活 .

我偶然发现这个的原因是我在 cv=LeaveOneOut()scoring='balanced_accuracy' (scikit-learn v0.20.dev0)的不 balancer 数据集上使用 GridSearchCV . 将评分指标(例如 balancer 准确度(或召回))应用于每个遗漏样本是没有意义的 . 相反,我想首先收集所有预测,然后将我的评分指标应用于所有预测 . 或者这是否涉及推理错误?

Update: 我通过创建基于 GridSearchCV 的自定义网格搜索类来解决它,区别在于首先从所有内部折叠收集预测,并且评分指标应用一次 .

1 回答

  • 1

    GridSearchCV 使用评分来决定在模型中设置哪些内部超参数 .

    如果要估计“最佳”超参数的性能,则需要执行额外的交叉验证步骤 .

    http://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html

    编辑以更接近回答实际问题:对我来说,如果你想使用 LeaveOneOutbalanced_accuracy ,那么收集每个折叠的预测并然后对它们进行全部评分似乎是合理的 . 我想你需要制作自己的网格搜索器才能做到这一点 . 您可以使用 model_selection.ParameterGridmodel_selection.KFold .

相关问题