在Gridsearch CV中进行评分

8

我刚开始使用Python中的GridSearchCV,但是我对其中的scoring参数感到困惑。我在某些地方看到过这个参数,

scorers = {
    'precision_score': make_scorer(precision_score),
    'recall_score': make_scorer(recall_score),
    'accuracy_score': make_scorer(accuracy_score)
}

grid_search = GridSearchCV(clf, param_grid, scoring=scorers, refit=refit_score,
                       cv=skf, return_train_score=True, n_jobs=-1)

使用这些值,即精度、召回率和准确性在评分中的意图是什么?

这是否被网格搜索用于根据这些评分值给出最优化参数...比如为了获得最佳精度分数,它会找到最佳参数或类似的东西?

它会计算可能参数的精度、召回率和准确性,并给出结果,现在的问题是,如果这是真的,那么它会基于精度、召回率或准确性选择最佳参数吗?上述说法是否正确?

2个回答

12

你的假设基本上是正确的。这个参数字典使得网格搜索能够在每个评分指标上进行优化,并找到每个评分的最佳参数。

然而,如果不选择用于refit的评分,则无法让网格搜索自动拟合并返回best_estimator_,否则会出现以下错误:

ValueError: For multi-metric scoring, the parameter refit must be set to a scorer 
key to refit an estimator with the best parameter setting on the whole data and make
the best_* attributes available for that metric. If this is not needed, refit should 
be set to False explicitly. True was passed.

6
我明白了,如果我设定 refit='precision_score',那么它会给出最佳精确度得分的最佳参数。 - KMittal
3
完全正确!只是补充一点,你可以在完成网格搜索后通过lr_grid.cv_results_或更易读的方式pd.DataFrame(lr_grid.cv_results_)访问所有的拟合和分数。 - G. Anderson
2
非常感谢 :) 它帮助我确认了很多。 - KMittal

3
这些值的使用意图是什么,即精确度、召回率和准确性在评分中的作用?
只要你的问题也包括“什么是精确度、召回率和准确性以及为什么要使用它们?”...
- 准确性 =(正确预测数)/(总预测数) - 精确度 =(真正例)/(真正例+假正例) - 召回率 =(真正例)/(真正例+假反例)
其中,真正例是正确的真实预测,假正例是不正确的真实预测,假反例是不正确的假预测。
当使用不平衡数据集(即标签为“0”的样本很多,但标签为“1”的样本很少)时,召回率和精确度是有用的指标。
召回率和精确度还可以导致稍微复杂一些的评分指标,如F1_score(和Fbeta_score),这些指标也非常有用。
这里有一篇好文章解释了召回率和精确度的工作原理。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接