如何在gridsearchcv中使用log_loss scorer?

How to use log_loss scorer in gridsearchcv?

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

我看到很少有人提到neg_log_loss?和log_loss一样吗?如果不行可以直接在gridsearchcv中使用log_loss吗?

documentation, scoring may take different inputs: string, callable, list/tuple, dict or None. If you use strings, you can find a list of possible entries here 中所述。

在那里,作为对数损失的字符串代表,你会发现"neg_log_loss",即负对数损失,它只是对数损失乘以-1。这是处理最大化问题的一种简单方法(这是 GridSearchCV 所期望的,因为它需要一个分数参数,而不是损失参数),而不是最小化问题(你想要最小对数损失,这相当于最大负对数损失)。

如果您想直接将对数损失函数传递给 GridSearchCV,则只需从 Scikit-learn 创建一个记分器 log_loss function by using 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_)