hinge_loss#
- sklearn.metrics.hinge_loss(y_true, pred_decision, *, метки=None, sample_weight=None)[источник]#
Средняя потеря на шарнире (нерегуляризованная).
В случае бинарного класса, предполагая, что метки в y_true закодированы как +1 и -1, когда допускается ошибка предсказания,
margin = y_true * pred_decisionвсегда отрицательно (поскольку знаки не совпадают), что подразумевает1 - marginвсегда больше 1. Суммарная шарнирная потеря, следовательно, является верхней границей количества ошибок, допущенных классификатором.В многоклассовом случае функция ожидает, что либо все метки включены в y_true, либо предоставлен необязательный аргумент labels, который содержит все метки. Многометочный запас рассчитывается согласно методу Крэммера-Сингера. Как и в бинарном случае, кумулятивная шарнирная потеря является верхней границей количества ошибок, допущенных классификатором.
Подробнее в Руководство пользователя.
- Параметры:
- y_truearray-like формы (n_samples,)
Истинная цель, состоящая из целых чисел двух значений. Положительная метка должна быть больше отрицательной метки.
- pred_decisionмассивоподобный формы (n_samples,) или (n_samples, n_classes)
Предсказанные решения, как выводимые функцией decision_function (числа с плавающей точкой).
- меткиarray-like, default=None
Содержит все метки для задачи. Используется в мультиклассовом hinge loss.
- sample_weightarray-like формы (n_samples,), по умолчанию=None
Веса выборок.
- Возвращает:
- потеряfloat
Средняя потеря с шарниром.
Ссылки
[2]Коби Краммер, Йорам Сингер. Об алгоритмической реализации многоклассовых ядерных векторных машин. Журнал исследований машинного обучения 2, (2001), 265-292.
Примеры
>>> 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
Примеры галереи#
Построение границ классификации с различными ядрами SVM