【发布时间】:2019-09-17 10:05:50
【问题描述】:
是否可以在 gridsearchcv 中使用 log_loss 指标?
我见过很少有人提到neg_log_loss的帖子?和log_loss一样吗?如果不是可以直接在gridsearchcv中使用log_loss吗?
【问题讨论】:
标签: python machine-learning scikit-learn grid-search
是否可以在 gridsearchcv 中使用 log_loss 指标?
我见过很少有人提到neg_log_loss的帖子?和log_loss一样吗?如果不是可以直接在gridsearchcv中使用log_loss吗?
【问题讨论】:
标签: python machine-learning scikit-learn grid-search
如documentation 中所述,评分可能采用不同的输入:字符串、可调用、列表/元组、字典或无。如果您使用字符串,您可以找到可能的条目列表here。
在那里,作为对数损失的代表字符串,您会找到“neg_log_loss”,即负对数损失,它只是对数损失乘以-1。这是处理最大化问题的一种简单方法(这是 GridSearchCV 所期望的,因为它需要一个分数参数,而不是一个损失参数),而不是一个最小化问题(你想要最小的日志损失,这相当于最大负对数损失)。
如果您想直接将 log loss 函数传递给 GridSearchCV,您只需使用 make_scorer 从 Scikit-learn log_loss 函数创建一个记分器:
from sklearn import svm, datasets
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import log_loss, make_scorer
iris = datasets.load_iris()
parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
svc = svm.SVC(gamma="scale", probability=True)
LogLoss = make_scorer(log_loss, greater_is_better=False, needs_proba=True)
clf = GridSearchCV(svc, parameters, cv=5, scoring=LogLoss)
clf.fit(iris.data, iris.target)
print(clf.best_score_, clf.best_estimator_)
【讨论】: