Как использовать счетчик log_loss в gridsearchcv? - PullRequest
1 голос
/ 28 апреля 2019

Можно ли использовать метрику log_loss в gridsearchcv?

Я видел несколько постов, где люди упоминали о neg_log_loss? Это так же, как log_loss? Если нет, то возможно ли использовать log_loss непосредственно в gridsearchcv?

1 Ответ

1 голос
/ 29 апреля 2019

Как указано в документации , оценка может принимать разные входные данные: строка, вызываемый, список / кортеж, dict или None.Если вы используете строки, вы можете найти список возможных записей здесь .

Там в качестве строкового представителя для потери журнала вы найдете "neg_log_loss", то есть отрицательную потерю журнала, которая представляет собой просто потерю журнала, умноженную на -1.Это простой способ справиться с проблемой максимизации (именно этого ожидает GridSearchCV, поскольку для нее требуется параметр оценки, а не параметр потерь) вместо минимизации (вы хотите минимальную потерю журнала, которая эквивалентна максимальнойотрицательная потеря журнала).

Если вместо этого вы хотите напрямую передать функцию потери журнала в GridSearchCV, вам просто нужно создать счетчика из функции Scikit-learn log_loss , используя 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_)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...