fbeta_score#
- sklearn.metrics.fbeta_score(y_true, y_pred, *, beta, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')[Quelle]#
Berechne den F-beta-Score.
Der F-beta-Score ist das gewichtete harmonische Mittel aus Präzision und Recall, das seinen optimalen Wert bei 1 und seinen schlechtesten Wert bei 0 erreicht.
Der Parameter
betarepräsentiert das Verhältnis der Bedeutung von Recall zur Bedeutung von Präzision.beta > 1gibt Recall mehr Gewicht, währendbeta < 1die Präzision bevorzugt. Zum Beispiel machtbeta = 2Recall doppelt so wichtig wie Präzision, währendbeta = 0.5das Gegenteil tut. Asymptotisch betrachtetbeta -> +infnur Recall undbeta -> 0nur Präzision.Die Formel für den F-beta-Score lautet
\[F_\beta = \frac{(1 + \beta^2) \text{tp}} {(1 + \beta^2) \text{tp} + \text{fp} + \beta^2 \text{fn}}\]Wobei \(\text{tp}\) die Anzahl der True Positives, \(\text{fp}\) die Anzahl der False Positives und \(\text{fn}\) die Anzahl der False Negatives ist.
Unterstützung über binäre Ziele wird erreicht, indem Multiklassen und Multilabel-Daten als Sammlung von binären Problemen behandelt werden, eines für jedes Label. Für den binären Fall gibt das Setzen von
average='binary'den F-beta-Score fürpos_labelzurück. Wennaveragenicht'binary'ist, wirdpos_labelignoriert und der F-beta-Score für beide Klassen berechnet, dann gemittelt oder beide zurückgegeben (wennaverage=None). Ähnlich wird für Multiklassen und Multilabel-Ziele der F-beta-Score für allelabelsentweder zurückgegeben oder gemittelt, abhängig vom Parameteraverage. Verwenden Sielabels, um die Menge der Labels anzugeben, für die der F-beta-Score berechnet werden soll.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
Bestimmt das Gewicht des Recalls im kombinierten 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).
- sample_weightarray-like der Form (n_samples,), Standardwert=None
Stichprobengewichte.
- zero_division{“warn”, 0.0, 1.0, np.nan}, Standard=”warn”
Setzt den Wert, der zurückgegeben wird, wenn eine Division durch Null auftritt, d. h. wenn alle Vorhersagen und Labels negativ sind.
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:
- fbeta_scorefloat (wenn average nicht None ist) oder Array von float, shape = [n_unique_labels]
F-beta-Score der positiven Klasse in der binären Klassifizierung oder gewichteter Durchschnitt des F-beta-Scores jeder Klasse für die Multiklassen-Aufgabe.
Siehe auch
precision_recall_fscore_supportBerechnet die Präzision, den Recall, den F-Score und den Support.
multilabel_confusion_matrixBerechne eine Konfusionsmatrix für jede Klasse oder Stichprobe.
Anmerkungen
Wenn
true positive + false positive + false negative == 0ist, gibt f-score 0.0 zurück und löst eineUndefinedMetricWarningaus. Dieses Verhalten kann durch Setzen vonzero_divisiongeändert werden.Der F-beta-Score ist nicht als benannter Scorer implementiert, der direkt an den
scoring-Parameter von Cross-Validation-Tools übergeben werden kann: Er muss mitmake_scorereingewickelt werden, um den Wert vonbetaanzugeben. Siehe Beispiele für Details.Referenzen
[1]R. Baeza-Yates und B. Ribeiro-Neto (2011). Modern Information Retrieval. Addison Wesley, S. 327-328.
Beispiele
>>> import numpy as np >>> from sklearn.metrics import fbeta_score >>> y_true = [0, 1, 2, 0, 1, 2] >>> y_pred = [0, 2, 1, 0, 0, 1] >>> fbeta_score(y_true, y_pred, average='macro', beta=0.5) 0.238 >>> fbeta_score(y_true, y_pred, average='micro', beta=0.5) 0.33 >>> fbeta_score(y_true, y_pred, average='weighted', beta=0.5) 0.238 >>> fbeta_score(y_true, y_pred, average=None, beta=0.5) array([0.71, 0. , 0. ]) >>> y_pred_empty = [0, 0, 0, 0, 0, 0] >>> fbeta_score( ... y_true, ... y_pred_empty, ... average="macro", ... zero_division=np.nan, ... beta=0.5, ... ) 0.128
Um
fbeta_scorerals Scorer zu verwenden, muss zuerst ein aufrufbares Scorer-Objekt mitmake_scorererstellt werden, wobei der Wert für den Parameterbetaübergeben wird.>>> from sklearn.metrics import fbeta_score, make_scorer >>> ftwo_scorer = make_scorer(fbeta_score, beta=2) >>> from sklearn.model_selection import GridSearchCV >>> from sklearn.svm import LinearSVC >>> grid = GridSearchCV( ... LinearSVC(dual="auto"), ... param_grid={'C': [1, 10]}, ... scoring=ftwo_scorer, ... cv=5 ... )