hinge_loss#
- sklearn.metrics.hinge_loss(y_true, pred_decision, *, labels=None, sample_weight=None)[源代码]#
平均铰链损失(非正规化)。
在二进制类情况下,假设y_true中的标签用+1和-1编码,当出现预测错误时,
margin = y_true * pred_decision
总是消极的(因为迹象不一致),这意味着1 - margin
始终大于1。 因此,累积的铰链损失是分类器所犯错误数量的上限。在多类情况下,该函数期望所有标签都包含在y_true中,或者提供包含所有标签的可选标签参数。多标签余量根据Crammer-Singer的方法计算。与二进制情况一样,累积的铰链损失是分类器所犯错误数量的上限。
阅读更多的 User Guide .
- 参数:
- y_true形状类似阵列(n_samples,)
真正的目标,由两个值的整数组成。阳性标签必须大于阴性标签。
- pred_decision形状类似阵列(n_samples,)或(n_samples,n_classes)
预测决策,由decision_函数(floats)输出。
- labels类数组,默认=无
包含问题的所有标签。用于多类铰链损失。
- sample_weight形状类似数组(n_samples,),默认=无
样本重量。
- 返回:
- loss浮子
平均铰链损失。
引用
[1]Wikipedia entry on the Hinge loss <https://en.wikipedia.org/wiki/Hinge_loss>
_.[2]科比·克莱默、约拉姆·辛格。基于多类核的载体机的数学实现。《机器学习研究杂志》2,(2001),265-292。
[3]L1 AND L2 Regularization for Multiclass Hinge Loss Models by Robert C. Moore, John DeNero <https://storage.googleapis.com/pub-tools-public-publication-data/pdf/37362.pdf>
_.示例
>>> from sklearn import svm >>> from sklearn.metrics import hinge_loss >>> X = [[0], [1]] >>> y = [-1, 1] >>> est = svm.LinearSVC(random_state=0) >>> est.fit(X, y) LinearSVC(random_state=0) >>> pred_decision = est.decision_function([[-2], [3], [0.5]]) >>> pred_decision array([-2.18..., 2.36..., 0.09...]) >>> hinge_loss([-1, 1, 1], pred_decision) np.float64(0.30...)
在多类情况下:
>>> import numpy as np >>> X = np.array([[0], [1], [2], [3]]) >>> Y = np.array([0, 1, 2, 3]) >>> labels = np.array([0, 1, 2, 3]) >>> est = svm.LinearSVC() >>> est.fit(X, Y) LinearSVC() >>> pred_decision = est.decision_function([[-1], [2], [3]]) >>> y_true = [0, 2, 3] >>> hinge_loss(y_true, pred_decision, labels=labels) np.float64(0.56...)