log_loss#

sklearn.metrics.log_loss(y_true, y_pred, *, normalize=True, sample_weight=None, labels=None)[source]#

Log loss,又名 logistic loss 或交叉熵损失。

这是(多项式)逻辑回归及其扩展(例如神经网络)中使用的损失函数,定义为逻辑模型的负对数似然,该模型为其训练数据 y_true 返回 y_pred 概率。对数损失仅适用于两个或更多标签。对于具有真实标签 \(y \in \{0,1\}\) 和概率估计 \(p = \operatorname{Pr}(y = 1)\) 的单个样本,对数损失为

\[L_{\log}(y, p) = -(y \log (p) + (1 - y) \log (1 - p))\]

用户指南中了解更多信息。

参数:
y_truearray-like or label indicator matrix

n_samples 样本的真实(正确)标签。

y_predarray-like of float, shape = (n_samples, n_classes) or (n_samples,)

预测概率,由分类器的 predict_proba 方法返回。如果 y_pred.shape = (n_samples,),则提供的概率被假定为正类的概率。假定 y_pred 中的标签按字母顺序排列,如 LabelBinarizer 所做。

y_pred 值被剪切到 [eps, 1-eps],其中 epsy_pred 的 dtype 的机器精度。

normalizebool, default=True

如果为 true,则返回每个样本的平均损失。否则,返回每个样本损失的总和。

sample_weightshape 为 (n_samples,) 的 array-like, default=None

样本权重。

labels类似数组对象, default=None

如果未提供,则标签将从 y_true 推断。如果 labelsNoney_pred 的形状为 (n_samples,),则假定标签为二进制并从 y_true 推断。

版本 0.18 新增。

返回:
loss浮点数

Log loss,又名 logistic loss 或交叉熵损失。

注意事项

使用的对数是自然对数(以 e 为底)。

References

C.M. Bishop (2006). Pattern Recognition and Machine Learning. Springer, p. 209.

示例

>>> from sklearn.metrics import log_loss
>>> log_loss(["spam", "ham", "ham", "spam"],
...          [[.1, .9], [.9, .1], [.8, .2], [.35, .65]])
0.21616