gpt4 book ai didi

python - sklearn log_loss 不同数量的类

转载 作者:太空狗 更新时间:2023-10-30 01:53:56 24 4
gpt4 key购买 nike

我在 sklearn 中使用 log_loss

from sklearn.metrics import log_loss
print log_loss(true, pred,normalize=False)

我有以下错误:

ValueError: y_true and y_pred have different number of classes 38, 2

这对我来说真的很奇怪,因为数组看起来是有效的:

print pred.shape
print np.unique(pred)
print np.unique(pred).size
(19191L,)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32 33 34 35 36 37]
38

print true.shape
print np.unique(true)
print np.unique(true).size
(19191L,)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32 33 34 35 36 37]
38

log_loss 有什么问题?为什么会抛出错误?

示例数据:

pred: array([ 0,  1,  2, ...,  3, 12, 16], dtype=int64)
true: array([ 0, 1, 2, ..., 3, 12, 16])

最佳答案

很简单,您使用的是预测而不是预测的概率。您的 pred 变量包含

[ 1 2 1 3 .... ] #Classes : 1, 2 or 3

但要使用log_loss,它应该包含如下内容:

 #each element is an array with probability of each class
[[ 0.1, 0.8, 0.1] [ 0.0, 0.79 , 0.21] .... ]

要获得这些概率,请使用函数 predict_proba:

pred = model.predict_proba(x_test)
eval = log_loss(y_true,pred)

关于python - sklearn log_loss 不同数量的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33616102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com