hinge_loss#
- sklearn.metrics.hinge_loss(y_true, pred_decision, *, labels=None, sample_weight=None)[source]#
Durchschnittlicher Hinge-Verlust (nicht regularisiert).
Im binären Klassenfall, unter der Annahme, dass die Labels in y_true mit +1 und -1 kodiert sind, ist bei einem Vorhersagefehler
margin = y_true * pred_decisionimmer negativ (da die Vorzeichen nicht übereinstimmen), was impliziert, dass1 - marginimmer größer als 1 ist. Der kumulierte Hinge-Verlust ist daher eine Obergrenze für die Anzahl der vom Klassifikator gemachten Fehler.Im Multiklassenfall erwartet die Funktion, dass entweder alle Labels in y_true enthalten sind oder ein optionales labels-Argument bereitgestellt wird, das alle Labels enthält. Der Multilabel-Margin wird nach der Crammer-Singer-Methode berechnet. Wie im binären Fall ist der kumulierte Hinge-Verlust eine Obergrenze für die Anzahl der vom Klassifikator gemachten Fehler.
Mehr erfahren Sie im Benutzerhandbuch.
- Parameter:
- y_truearray-ähnlich mit Form (n_samples,)
Wahre Zielwerte, bestehend aus ganzen Zahlen mit zwei Werten. Das positive Label muss größer als das negative Label sein.
- pred_decisionarray-ähnlich mit Form (n_samples,) oder (n_samples, n_classes)
Vorhergesagte Entscheidungen, wie von decision_function ausgegeben (Floats).
- labelsarray-artig, Standardwert=None
Enthält alle Labels für das Problem. Wird im Multiklassen-Hinge-Verlust verwendet.
- sample_weightarray-like der Form (n_samples,), Standardwert=None
Stichprobengewichte.
- Gibt zurück:
- lossfloat
Durchschnittlicher Hinge-Verlust.
Referenzen
[2]Koby Crammer, Yoram Singer. On the Algorithmic Implementation of Multiclass Kernel-based Vector Machines. Journal of Machine Learning Research 2, (2001), 265-292.
Beispiele
>>> 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
Im Multiklassenfall
>>> 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
Galeriebeispiele#
Klassifikationsgrenzen mit verschiedenen SVM-Kernen plotten