我正在使用一个测试列表和一个预测列表,其中包含 4000 个元素,如本例所示
test_list=[1,0,0,1,0,.....]
prediction_list=[1,1,0,1,0......]
如何用 python 代码找到这两个列表之间的二进制交叉熵?我尝试使用 sklearn 中的 log_loss
函数:
log_loss(test_list,prediction_list)
但是损失函数的输出大约是 10.5,这对我来说似乎不太合适。我是否以错误的方式使用该函数,或者应该使用其他实现?
最佳答案
嘿,对于 log_loss 函数,您应该输入预测 1 或 0 的概率,而不是预测标签。交叉熵损失没有为概率 0 和 1 定义。因此您的预测列表应该 -
prediction_list = [0.8,0.4,0.3...]
假设概率针对正标签。
或者应该
prediction_list = [[0.8,0.2],[0.4,0.6], [0.3,0.7] ...]
您看到的结果是由于 scikit 实现中的 eps 造成的。
我假设您的 Prediction_list 是标签列表,因为很少看到模型可以预测 0 和 1 的概率。
关于python - 如何在Python中计算预测集和测试集之间的二元交叉熵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54207887/