在Gridsearch CV中评分

时间:2018-09-27 15:03:06

标签: python machine-learning data-science grid-search

我刚开始使用Python进行GridSearchCV,但是我对此感到困惑。我见过的某个地方

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)

使用这些值的目的是什么,即精度,查全率,计分准确性?

gridsearch是否使用它根据这些得分值为我们提供了优化的参数...。例如,对于最佳精度得分,它可以找到最佳参数或类似的东西?

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

2 个答案:

答案 0 :(得分:4)

您的假设基本上是正确的。通过此参数字典,gridsearch可以优化每个得分指标,并为每个得分找到最佳参数。

但是,您然后不能让gridsearch自动适合并返回best_estimator_,而没有选择要用于refit的分数,它将抛出以下错误:

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.

答案 1 :(得分:1)

  

使用这些值的目的是什么,即精度,查全率,计分准确性?

以防万一,您的问题还包括“精度,召回率和准确性是什么,为什么使用它们?” ...

  • 准确度=(正确的预测数)/(总预测数)
  • Precision =(真阳性)/(真阳性+假阳性)
  • 召回率=(真阳性)/(真阳性+假阴性)

如果“真实肯定”是对正确的true的预测,那么“错误肯定”是对不正确的true的预测,而错误否定则是对不正确的false的预测。

在处理不平衡的数据集时,召回率和精确度是有用的指标(即,有很多标有“ 0”的样本,但标有“ 1”的样本却少得多。

召回率和精度还会导致评分指标稍微复杂一些,例如F1_score(和Fbeta_score),这也非常有用。

这里有great article,说明了召回率和精确度的工作原理。