python - 如何在Python中计算预测集和测试集之间的二元交叉熵?

标签 python machine-learning cross-entropy

我正在使用一个测试列表和一个预测列表,其中包含 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/

相关文章:

python - 通过 Amazon EC2 Hadoop 下载许多大文件

python - 如何提高 TensorFlow 中分类、非二元、外语情感分析模型的准确性?

python - 分解适合 python 的随机森林分类?

tensorflow - TensorFlow SparseCategoricalCrossentropy 如何工作?

python - 如何使用 pandas 记录跨列是否发生特定更改?

python - 尝试在 Python 中写入文件时收到 TypeError

tensorflow - softmax_cross_entropy_with_logits 的 PyTorch 等价

tensorflow - 为什么 softmax_cross_entropy_with_logits_v2 返回成本甚至相同

python - 在python中排序

machine-learning - Weka:10 倍 CV 中每次折叠的结果