围绕sklearn gridsearchcv评分参数和使用train test split的混淆

eit6fx6z  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(254)

我对gridsearchcv如何与列车测试分离工作感到有点困惑。
据我所知,在为我使用的数据集创建模型时,一篇论文使用了roc auc。
我正试图复制这篇论文所做的,至少尽我所能。通过阅读这里的其他几篇文章,我发现在整个数据集上运行gridsearchcv容易过度拟合,因此我们应该将数据分为训练分区和测试分区。然后,我们应该使用gridsearchcv和任何模型和参数运行训练分区,然后拟合它,然后使用我们留出的数据集的测试部分获得分数。
现在我感到困惑的是gridsearchcv,据我所知,在搜索参数和使用best_score时,它会为数据分割成的每个折叠提供分数,我们可以从这些分数中获得最好的分数。我不明白分数代表什么,也不明白为什么一开始就可以传递评分参数,因为gridsearchcv的工作就是始终找到最好的参数(也许我在这里做了一个糟糕的假设,但我假设存在一组客观的最佳参数,不管评分方法如何)。我的想法是,我将使用gridsearchcv找到最佳参数,然后使用所述参数创建拟合模型,最后使用该模型和我保存用于测试的分区,并使用roc auc评分方法对其进行测试。
因此,在最后,我传递给gridsearchcv的评分方法是否重要(如果有的话),因为它总是希望给出最好的参数集,我将使用这些参数来计算测试分区的最终分数?

wj8zmpe1

wj8zmpe11#

这份文件可能会有所帮助。
在这里你可以看到 scoring 参数允许您拥有各种度量,例如 roc_auc . 请参见此处所有scikit的指标。
对不同度量进行优化会产生不同的优化参数。只需考虑优化精度与召回率。优化精度可以减少误报,而优化召回可以减少误报。
还有,在 GridSearchCV 这个 CV 代表交叉验证。列车/测试拆分发生在该功能内部,已处理完毕。您只需将拆分器作为参数提供给 GridSearchCV 例如 cv=StratifiedKFold(n_splits=5, shuffle=True) .

相关问题