precision_recall_fscore_support#
- sklearn.metrics.precision_recall_fscore_support(y_true, y_pred, *, beta=1.0, labels=None, pos_label=1, average=None, warn_for=('precision', 'recall', 'f-score'), sample_weight=None, zero_division='warn')[source]#
Berechne Präzision, Recall, F-Maß und Support für jede Klasse.
Die Präzision ist das Verhältnis
tp / (tp + fp), wobeitpdie Anzahl der True Positives undfpdie Anzahl der False Positives ist. Die Präzision ist intuitiv die Fähigkeit des Klassifikators, eine negative Stichprobe nicht als positiv zu kennzeichnen.Der Recall ist das Verhältnis
tp / (tp + fn), wobeitpdie Anzahl der wahren Positive undfndie Anzahl der falschen Negative ist. Der Recall ist intuitiv die Fähigkeit des Klassifikators, alle positiven Stichproben zu finden.Der F-Beta-Score kann als gewichteter harmonischer Mittelwert von Präzision und Recall interpretiert werden, wobei ein F-Beta-Score seinen besten Wert bei 1 und seinen schlechtesten Wert bei 0 erreicht.
Der F-Beta-Score gewichtet den Recall stärker als die Präzision mit dem Faktor
beta.beta == 1.0bedeutet, dass Recall und Präzision gleich wichtig sind.Der Support ist die Anzahl der Vorkommen jeder Klasse in
y_true.Support über binäre Ziele hinaus wird erreicht, indem mehrklassige und mehrfach-label Daten als Sammlung binärer Probleme behandelt werden, eines für jedes Label. Im binären Fall gibt die Einstellung
average='binary'Metriken fürpos_labelzurück. Wennaveragenicht'binary'ist, wirdpos_labelignoriert und Metriken für beide Klassen berechnet, dann gemittelt oder beides zurückgegeben (wennaverage=None). Ähnlich wird bei mehrklassigen und mehrfach-label Zielen Metriken für allelabelsentweder zurückgegeben oder gemittelt, abhängig vomaverageParameter. Verwenden Sielabels, um die Menge der Labels anzugeben, für die Metriken berechnet werden sollen.Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- y_true1D Array-ähnlich oder Label-Indikator-Array / Sparse Matrix
Wahre (korrekte) Zielwerte. Sparse Matrix wird nur unterstützt, wenn die Ziele vom Typ Multilabel sind.
- y_pred1D Array-ähnlich oder Label-Indikator-Array / Sparse Matrix
Geschätzte Ziele, wie sie von einem Klassifikator zurückgegeben werden. Sparse Matrix wird nur unterstützt, wenn die Ziele vom Typ Multilabel sind.
- betafloat, Standard=1.0
Die Stärke von Recall gegenüber Präzision im F-Score.
- labelsarray-artig, Standardwert=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.Geändert in Version 0.17: Der Parameter
labelswurde für Multiklassenprobleme verbessert.- 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’
Dieser Parameter ist für Multiklassen-/Multilabel-Ziele erforderlich. Wenn
None, werden die Metriken für jede Klasse zurückgegeben. Andernfalls bestimmt dieser Parameter die Art der Mittelung, die auf den Daten durchgeführt wird.'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 dem Support (die Anzahl der tatsächlichen Instanzen für jedes Label). Dies verändert „macro“, um die Ungleichheit der Labels zu berücksichtigen; es kann zu einem F-Score führen, der nicht zwischen Präzision und Recall liegt.
'samples':Metriken für jede Instanz berechnen und deren Mittel finden (nur sinnvoll für Multilabel-Klassifizierung, wo dies von
accuracy_scoreabweicht).
- warn_forlist, tuple oder set, zur internen Verwendung
Dies bestimmt, welche Warnungen ausgegeben werden, wenn diese Funktion verwendet wird, um nur eine ihrer Metriken zurückzugeben.
- sample_weightarray-like der Form (n_samples,), Standardwert=None
Stichprobengewichte.
- zero_division{“warn”, 0.0, 1.0, np.nan}, Standard=”warn”
Legt den Wert fest, der bei einer Division durch Null zurückgegeben werden soll
recall: wenn keine positiven Labels vorhanden sind
precision: wenn keine positiven Vorhersagen vorhanden sind
f-score: beide
Anmerkungen
Wenn auf „warn“ gesetzt, verhält sich dies wie 0, aber es wird auch eine Warnung ausgegeben.
Wenn auf
np.nangesetzt, werden solche Werte von der Mittelung ausgeschlossen.
Hinzugefügt in Version 1.3: Option
np.nanhinzugefügt.
- Gibt zurück:
- precisionfloat (wenn average nicht None ist) oder Array von float, shape = [n_unique_labels]
Präzisionswert.
- recallfloat (wenn average nicht None ist) oder Array von float, shape = [n_unique_labels]
Recall-Wert.
- fbeta_scorefloat (wenn average nicht None ist) oder Array von float, shape = [n_unique_labels]
F-Beta-Wert.
- supportNone (wenn average nicht None ist) oder Array von int, shape = [n_unique_labels]
Die Anzahl der Vorkommen jedes Labels in
y_true.
Anmerkungen
Wenn
true positive + false positive == 0ist, ist die Präzision undefiniert. Wenntrue positive + false negative == 0ist, ist der Recall undefiniert. Wenntrue positive + false negative + false positive == 0ist, ist der F-Score undefiniert. In solchen Fällen wird die Metrik standardmäßig auf 0 gesetzt und eineUndefinedMetricWarningausgegeben. Dieses Verhalten kann mitzero_divisiongeändert werden.Referenzen
Beispiele
>>> import numpy as np >>> from sklearn.metrics import precision_recall_fscore_support >>> y_true = np.array(['cat', 'dog', 'pig', 'cat', 'dog', 'pig']) >>> y_pred = np.array(['cat', 'pig', 'dog', 'cat', 'cat', 'dog']) >>> precision_recall_fscore_support(y_true, y_pred, average='macro') (0.222, 0.333, 0.267, None) >>> precision_recall_fscore_support(y_true, y_pred, average='micro') (0.33, 0.33, 0.33, None) >>> precision_recall_fscore_support(y_true, y_pred, average='weighted') (0.222, 0.333, 0.267, None)
Es ist möglich, pro-Label-Präzisionen, Recalls, F1-Scores und Supports zu berechnen, anstatt zu mitteln
>>> precision_recall_fscore_support(y_true, y_pred, average=None, ... labels=['pig', 'dog', 'cat']) (array([0. , 0. , 0.66]), array([0., 0., 1.]), array([0. , 0. , 0.8]), array([2, 2, 2]))