在 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 进行逻辑回归时的精度计算警告
输入包含 NaN、无穷大或值太大.. 使用 gridsearchcv 时,评分 = 'neg_mean_squared_log_error'