在 GridSearchCV 中使用精度作为评分时如何指定正标签

Posted

技术标签:

【中文标题】在 GridSearchCV 中使用精度作为评分时如何指定正标签【英文标题】:How to specify positive label when use precision as scoring in GridSearchCV 【发布时间】:2018-11-28 17:19:29 【问题描述】:
model = sklearn.model_selection.GridSearchCV(
        estimator = est, 
        param_grid = param_grid,
        scoring = 'precision',
        verbose = 1,
        n_jobs = 1,
        iid = True,
        cv = 3)

sklearn.metrics.precision_score(y, y_pred,pos_label=[0]) 中,我可以指定正标签,如何在 GridSearchCV 中也指定?

如果没有办法指定,在使用自定义评分时,我该如何定义?

我试过这个:

custom_score = make_scorer(precision_score(y, y_pred,pos_label=[0]),  
                          greater_is_better=True)  

但我得到了错误:

NameError: name 'y_pred' is not defined

【问题讨论】:

【参考方案1】:

读取docs,您可以将任何kwargs 传递给make_scorer,它们将自动传递给score_func 可调用对象。

from sklearn.metrics import precision_score, make_scorer
custom_scorer = make_scorer(precision_score, greater_is_better=True,  pos_label=0)

然后你将这个custom_scorer 传递给GridSearchCV

gs = GridSearchCV(est, ..., scoring=custom_scorer)

【讨论】:

以上是关于在 GridSearchCV 中使用精度作为评分时如何指定正标签的主要内容,如果未能解决你的问题,请参考以下文章

如何确定 GridSearchCV 中每个评分指标的最佳参数和最佳分数

如何使用 sklearn 中的 GridSearchCV 设置自己的评分以进行回归?

使用 GridSearchCV 进行逻辑回归时的精度计算警告

在 Gridsearchcv 中评分

输入包含 NaN、无穷大或值太大.. 使用 gridsearchcv 时,评分 = 'neg_mean_squared_log_error'

评分“roc_auc”值不适用于gridsearchCV应用RandomForestclassifer