jaccard_score#
- sklearn.metrics.jaccard_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')[source]#
Jaccard-Ähnlichkeitskoeffizient-Score.
Der Jaccard-Index [1] oder Jaccard-Similaritätskoeffizient, definiert als die Größe der Schnittmenge geteilt durch die Größe der Vereinigung zweier Label-Mengen, wird verwendet, um die Menge der vorhergesagten Labels für eine Stichprobe mit der entsprechenden Menge von Labels in
y_truezu vergleichen.Unterstützung über binäre Ziele wird erreicht, indem multiclass und multilabel Daten als Sammlung von binären Problemen behandelt werden, eines für jedes Label. Für den binären Fall gibt die Einstellung
average='binary'den Jaccard-Similaritätskoeffizienten fürpos_labelzurück. Wennaveragenicht'binary'ist, wirdpos_labelignoriert und die Scores für beide Klassen werden berechnet, dann gemittelt oder beide zurückgegeben (wennaverage=None). Ebenso werden für multiclass und multilabel Ziele die Scores für allelabelsentweder zurückgegeben oder gemittelt, abhängig vomaverageParameter. Verwenden Sielabels, um die Menge der Labels anzugeben, für die der Score berechnet werden soll.Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- y_true1D Array-ähnlich oder Label-Indikator-Array / Sparse Matrix
Grundwahrheits- (korrekte) Labels. Dünnbesetzte Matrizen werden nur unterstützt, wenn die Labels vom Typ Multilabel sind.
- y_pred1D Array-ähnlich oder Label-Indikator-Array / Sparse Matrix
Vorhergesagte Labels, wie sie von einem Klassifikator zurückgegeben werden. Dünnbesetzte Matrizen werden nur unterstützt, wenn die Labels vom Typ Multilabel sind.
- labelsarray-like der Form (n_classes,), Standard=None
Die Menge der Bezeichnungen, die eingeschlossen werden sollen, wenn
average != 'binary', und ihre Reihenfolge, wennaverage is None. Bezeichnungen, die in den Daten vorhanden sind, können ausgeschlossen werden, z. B. bei der Multiklassenklassifizierung, um eine „negative Klasse“ auszuschließen. Bezeichnungen, die nicht in den Daten vorhanden sind, können eingeschlossen werden und erhalten 0 Stichproben. Bei Multilabel-Zielen sind Bezeichnungen Spaltenindizes. Standardmäßig werden alle Bezeichnungen iny_trueundy_predin sortierter Reihenfolge verwendet.- pos_labelint, float, bool oder str, Standard=1
Die Klasse, für die berichtet werden soll, wenn
average='binary'und die Daten binär sind, andernfalls wird dieser Parameter ignoriert. Für Multiklassen- oder Multilabel-Ziele setzen Sielabels=[pos_label]undaverage != 'binary', um Metriken für nur eine Bezeichnung zu berichten.- average{‘micro’, ‘macro’, ‘samples’, ‘weighted’, ‘binary’} oder None, Standard=’binary’
Wenn
None, werden die Scores für jede Klasse zurückgegeben. Andernfalls bestimmt dies die Art der auf die Daten angewendeten Mittelung.'binary':Nur Ergebnisse für die durch
pos_labelangegebene Klasse berichten. Dies ist nur anwendbar, wenn die Ziele (y_{true,pred}) binär sind.'micro':Metriken global berechnen, indem die gesamten wahren Positive, falschen Negative und falschen Positive gezählt werden.
'macro':Metriken für jede Bezeichnung berechnen und deren ungewichtetes Mittel finden. Dies berücksichtigt keine unausgeglichenen Bezeichnungen.
'weighted':Berechnet Metriken für jedes Label und ermittelt deren Durchschnitt, gewichtet nach der Unterstützung (der Anzahl der tatsächlichen Instanzen für jedes Label). Dies modifiziert „macro“, um die unausgewogene Verteilung der Labels zu berücksichtigen.
'samples':Berechnet Metriken für jede Instanz und ermittelt deren Durchschnitt (nur sinnvoll für Multilabel-Klassifizierung).
- sample_weightarray-like der Form (n_samples,), Standardwert=None
Stichprobengewichte.
- zero_division„warn“, {0.0, 1.0}, Standardwert=„warn“
Legt den Wert fest, der zurückgegeben werden soll, wenn eine Division durch Null auftritt, d. h. wenn keine negativen Werte in Vorhersagen und Labels vorhanden sind. Wenn auf „warn“ gesetzt, verhält es sich wie 0, aber es wird auch eine Warnung ausgegeben.
Hinzugefügt in Version 0.24.
- Gibt zurück:
- scorefloat oder ndarray der Form (n_unique_labels,), dtype=np.float64
Der Jaccard-Score. Wenn
averagenichtNoneist, wird ein einzelner Skalar zurückgegeben.
Siehe auch
accuracy_scoreFunktion zur Berechnung des Genauigkeits-Scores.
f1_scoreFunktion zur Berechnung des F1-Scores.
multilabel_confusion_matrixFunktion zur Berechnung einer Verwirrmatrix für jede Klasse oder Stichprobe.
Anmerkungen
jaccard_scorekann eine schlechte Metrik sein, wenn für einige Stichproben oder Klassen keine positiven Fälle vorhanden sind. Jaccard ist undefiniert, wenn keine tatsächlichen oder vorhergesagten Labels vorhanden sind. Unsere Implementierung gibt einen Score von 0 mit einer Warnung zurück.Referenzen
Beispiele
>>> import numpy as np >>> from sklearn.metrics import jaccard_score >>> y_true = np.array([[0, 1, 1], ... [1, 1, 0]]) >>> y_pred = np.array([[1, 1, 1], ... [1, 0, 0]])
Im binären Fall
>>> jaccard_score(y_true[0], y_pred[0]) 0.6666
Im 2D-Vergleichsfall (z. B. Bildähnlichkeit)
>>> jaccard_score(y_true, y_pred, average="micro") 0.6
Im Multilabel-Fall
>>> jaccard_score(y_true, y_pred, average='samples') 0.5833 >>> jaccard_score(y_true, y_pred, average='macro') 0.6666 >>> jaccard_score(y_true, y_pred, average=None) array([0.5, 0.5, 1. ])
Im Multiclass-Fall
>>> y_pred = [0, 2, 1, 2] >>> y_true = [0, 1, 2, 2] >>> jaccard_score(y_true, y_pred, average=None) array([1. , 0. , 0.33])
Galeriebeispiele#
Multilabel-Klassifikation mit einem Klassifikator-Ketten