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_true zu 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ür pos_label zurück. Wenn average nicht 'binary' ist, wird pos_label ignoriert und die Scores für beide Klassen werden berechnet, dann gemittelt oder beide zurückgegeben (wenn average=None). Ebenso werden für multiclass und multilabel Ziele die Scores für alle labels entweder zurückgegeben oder gemittelt, abhängig vom average Parameter. Verwenden Sie labels, 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, wenn average 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 in y_true und y_pred in 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 Sie labels=[pos_label] und average != '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_label angegebene 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 average nicht None ist, wird ein einzelner Skalar zurückgegeben.

Siehe auch

accuracy_score

Funktion zur Berechnung des Genauigkeits-Scores.

f1_score

Funktion zur Berechnung des F1-Scores.

multilabel_confusion_matrix

Funktion zur Berechnung einer Verwirrmatrix für jede Klasse oder Stichprobe.

Anmerkungen

jaccard_score kann 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])