Неверный log_loss в sklearn.metrics.log_loss - PullRequest
0 голосов
/ 03 августа 2020

sklearn.metrics.log_loss, кажется, дает неверные результаты для np.arrays.

Допустим, у вас есть 2 идентичных образца с тремя классами.

import numpy as np 
from sklearn.metrics import log_loss
y_true = np.array([[1,0,0],[1,0,0]])
y_pred = np.array([[0.2,0.1,0.7],[0.2,0.1,0.7]])

Потери для первого образца должен быть равен следующему:

-(np.log(0.2) + np.log(1-0.1) + np.log(1-0.7))/3
>>> 0.9729237441392876

Действительно:

log_loss(y_true[0,:],y_pred[0,:])
>>> 0.9729237441392874

Однако все меняется, если мы берем оба образца одновременно:

log_loss(y_true[:,:],y_pred[:,:])
>>> 1.6094379124341003

update Кажется, рассчитывается только убыток для этого первого класса:

log_losses = -(y_true * np.log(y_pred) + (1-y_true) * np.log(1-y_pred))
>>> array([[1.60943791, 0.10536052, 1.2039728 ],
       [1.60943791, 0.10536052, 1.2039728 ]])

Я использую sklearn 0.23 и python 3.8.3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...