Scikitlearn:在GridSearchCV中得分

2024-04-24 14:07:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我偶然发现这一点的原因是我在一个不平衡的数据集上使用cv=LeaveOneOut()和{}(scikit learn v0.20.dev0)。对每个漏掉的样本应用平衡准确度(或召回率)这样的评分标准是没有意义的。相反,我希望首先收集所有预测,然后将我的评分指标应用于所有预测。或者这涉及到推理错误吗?在

更新:我通过创建一个基于GridSearchCV的自定义网格搜索类来解决这个问题,不同之处在于首先从所有内部折叠中收集预测,然后应用一次评分指标。在


Tags: 数据原因scikitdev0评分指标learn交叉
1条回答
网友
1楼 · 发布于 2024-04-24 14:07:09

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

如果你想评估“最优”超参数的性能,你需要做一个额外的交叉验证步骤。在

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

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

相关问题 更多 >