如何在gridsearchcv中使用log_loss scorer?

时间:2019-04-28 16:22:49

标签: python machine-learning scikit-learn grid-search

是否可以在gridsearchcv中使用log_loss指标?

我很少看到有人提到neg_log_loss的帖子?与log_loss相同吗?如果不是,是否可以在gridsearchcv中直接使用log_loss?

1 个答案:

答案 0 :(得分:1)

documentation中所述,计分可以采用不同的输入:字符串,可调用,列表/元组,字典或无。如果使用字符串,则可以找到可能的条目here的列表。

在这里,作为代表日志丢失的字符串,您会找到“ neg_log_loss”,即负日志丢失,即简单的日志丢失乘以-1。这是处理最大化问题(这是GridSearchCV期望的,因为它需要一个得分参数,而不是损失参数),而不是最小化(您想要最小的对数损失,它等于最大的对数),这是一种简单的方法。日志损失为负)。

相反,如果您想直接将日志丢失函数传递给GridSearchCV,则只需使用log_loss通过Scikit-learn make_scorer函数创建一个计分器:

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_)