You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多分类场景下scikit-learn log_loss与自定义计算结果不一致问题

多分类场景下log_loss计算结果差异的排查

我在研究分类器的log_loss指标时,分别尝试使用scikit-learn库中的log_loss函数,以及自行编写代码计算该指标以加深理解。二分类场景下两种方式得到的结果一致,但应用到多分类场景时,结果却不相同。

测试代码

from sklearn.metrics import log_loss
y_true = [0, 1, 2, 2]
y_pred = [[.9, .05,.05], [.8, .1,.1], [.3, .3,.4], [.01, .45, .44]]
print(log_loss(y_true, y_pred,labels=[0,1,2]))


from numpy import log as ln

N = len(y_true)
sum=0

for i in range(0,N):
    sum += ln(y_pred[i][y_true[i]])

log_loss = (1/N)*(-1)*sum
print(log_loss)

输出结果

1.0099640942345076
1.0363042231489643

问题原因

经排查发现,计算逻辑本身并无问题,差异源于预测概率输入的低级错误:y_pred最后一个元素的0.44应改为0.54,修正后两种方式的计算结果即可一致。

内容的提问来源于stack exchange,提问作者Ling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 04:24:24