对数损失#
- sklearn.metrics.log_loss(y_true, y_pred, *, normalize=True, sample_weight=None, labels=None)[source]#
对数损失,也称为逻辑损失或交叉熵损失。
这是(多项)逻辑回归及其扩展(如神经网络)中使用的损失函数,定义为返回其训练数据
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_true类数组或标签指示矩阵
n_samples个样本的真实(正确)标签。
- y_pred浮点数类数组,shape = (n_samples, n_classes) 或 (n_samples,)
预测概率,由分类器的predict_proba方法返回。如果
y_pred.shape = (n_samples,)
,则提供的概率被假定为正类的概率。y_pred
中的标签假定按字母顺序排序,如同LabelBinarizer
所做的那样。y_pred
值被裁剪到[eps, 1-eps]
,其中eps
是y_pred
的dtype的机器精度。- normalize布尔值,默认为True
如果为真,则返回每个样本的平均损失。否则,返回每个样本损失的总和。
- sample_weightshape 为 (n_samples,) 的类数组,默认为 None
样本权重。
- labels类数组,默认为 None
如果没有提供,则将从 y_true 推断标签。如果
labels
为None
且y_pred
的形状为(n_samples,),则假定标签为二元,并从y_true
推断。在 0.18 版本中添加。
- 返回:
- loss浮点数
对数损失,也称为逻辑损失或交叉熵损失。
备注
使用的对数是自然对数(以 e 为底)。
参考文献
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...