簡體   English   中英

如何在python中預測和測試集之間計算二進制交叉熵?

[英]How to calculate binary cross-entropy between a predicted and a test set in python?

我正在使用包含4000個元素的測試列表和預測列表,如本示例中所示

      test_list=[1,0,0,1,0,.....]
prediction_list=[1,1,0,1,0......]

如何使用python代碼找到這兩個列表之間的二進制交叉熵? 我嘗試使用log_loss函數:

log_loss(test_list,prediction_list)

但是損失函數的輸出就像10.5,對我來說似乎不對。 我是否以錯誤的方式使用該功能,還是應該使用其他實現?

您正在正確使用它。 二進制交叉熵的值是無界的-范圍從0到無窮大。 參見https://ml-cheatsheet.readthedocs.io/en/latest/loss_functions.html

嘿,對於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,您看到的結果。

我假設您的projection_list是標簽列表,因為很少會看到模型來預測0和1的概率。

我假設您已經有了數據和標簽,並且已將其分為訓練數據和測試數據以及標簽,並使用以下方法獲得了預測列表。 然后,您需要通過調用clf.predict_proba(data_test)從模型中獲得概率,如下所示。

import numpy as np
from sklearn.metrics import log_loss
from sklearn.linear_model import LogisticRegression

#test_list = [1,0,0,1,0,.....]
#prediction_list = [1,1,0,1,0......]

# Model learning and prediction
clf = LogisticRegression()
prediction_list = clf.predict(data_test)
pred_probabilities = clf.predict_proba(data_test)

# Evaluation of the prediction
print("The binary cross entropy loss is : %f" % log_loss(labels_test, pred_probabilities))

我仍然是機器學習方面的新手,因此請加一點鹽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM