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 中,或者提供一个包含所有标签的可选 labels 参数。多标签铰链损失根据 Crammer-Singer 的方法计算。与二分类情况一样,累积的铰链损失是分类器所犯错误数量的上界。
更多信息请参阅 用户指南 。
- Parameters:
- y_true类数组,形状为 (n_samples,)
真实目标,由两个值的整数组成。正标签必须大于负标签。
- pred_decision类数组,形状为 (n_samples,) 或 (n_samples, n_classes)
预测决策,如 decision_function 的输出(浮点数)。
- labels类数组,默认=None
包含所有标签。用于多分类铰链损失。
- sample_weight类数组,形状为 (n_samples,),默认=None
样本权重。
- Returns:
- lossfloat
平均铰链损失。
References
[1][2]Koby Crammer, Yoram Singer. 关于多分类核向量机的算法实现。机器学习研究杂志 2, (2001), 265-292.
Examples
>>> 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) 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) 0.56...
Gallery examples#
使用不同SVM核函数绘制分类边界