average_precision_score#
- sklearn.metrics.average_precision_score(y_true, y_score, *, average='macro', pos_label=1, sample_weight=None)[Quelle]#
Berechnet die durchschnittliche Präzision (AP) aus Vorhersageergebnissen.
AP fasst eine Precision-Recall-Kurve als gewichteten Mittelwert der Präzisionen zusammen, die bei jedem Schwellenwert erreicht werden, wobei die Zunahme des Recalls gegenüber dem vorherigen Schwellenwert als Gewicht verwendet wird.
\[\text{AP} = \sum_n (R_n - R_{n-1}) P_n\]wobei \(P_n\) und \(R_n\) die Präzision und der Recall beim n-ten Schwellenwert sind [1]. Diese Implementierung ist nicht interpoliert und unterscheidet sich von der Berechnung der Fläche unter der Precision-Recall-Kurve mit der Trapezregel, die eine lineare Interpolation verwendet und zu optimistisch sein kann.
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- y_truearray-ähnlich der Form (n_samples,) oder (n_samples, n_classes)
Wahre binäre Labels oder binäre Label-Indikatoren.
- y_scorearray-ähnlich der Form (n_samples,) oder (n_samples, n_classes)
Zielwerte, können entweder Wahrscheinlichkeitsschätzungen der positiven Klasse, Konfidenzwerte oder nicht-schwellenwertabhängige Entscheidungsmaße sein (wie sie von decision_function bei einigen Klassifikatoren zurückgegeben werden). Für decision_function-Werte sollten Werte größer oder gleich Null die positive Klasse anzeigen.
- average{„micro“, „samples“, „weighted“, „macro“} oder None, Standardwert=„macro“
Wenn
None, werden die Scores für jede Klasse zurückgegeben. Andernfalls bestimmt dies die Art der durchgeführten Durchschnittsbildung der Daten.'micro':Berechnet Metriken global, indem jedes Element der Label-Indikatormatrix als Label betrachtet wird.
'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 (der Anzahl der wahren Instanzen für jedes Label).
'samples':Berechnet Metriken für jede Instanz und ermittelt deren Durchschnitt.
Wird ignoriert, wenn
y_truebinär ist.- pos_labelint, float, bool oder str, Standard=1
Das Label der positiven Klasse. Gilt nur für binäres
y_true. Für Multilabel-Indikatoreny_trueistpos_labelauf 1 festgelegt.- sample_weightarray-like der Form (n_samples,), Standardwert=None
Stichprobengewichte.
- Gibt zurück:
- average_precisionfloat
Average Precision Score.
Siehe auch
roc_auc_scoreBerechnet die Fläche unter der ROC-Kurve.
precision_recall_curveBerechne Präzisions-Recall-Paare für verschiedene Wahrscheinlichkeitsschwellen.
PrecisionRecallDisplay.from_estimatorZeichnet die Precision-Recall-Kurve mithilfe eines Schätzers und von Daten.
PrecisionRecallDisplay.from_predictionsZeichnet die Precision-Recall-Kurve mithilfe wahrer und vorhergesagter Labels.
Anmerkungen
Geändert in Version 0.19: Anstatt linear zwischen Betriebspunkten zu interpolieren, werden die Präzisionen nach der Änderung des Recalls seit dem letzten Betriebspunkt gewichtet.
Referenzen
Beispiele
>>> import numpy as np >>> from sklearn.metrics import average_precision_score >>> y_true = np.array([0, 0, 1, 1]) >>> y_scores = np.array([0.1, 0.4, 0.35, 0.8]) >>> average_precision_score(y_true, y_scores) 0.83 >>> y_true = np.array([0, 0, 1, 1, 2, 2]) >>> y_scores = np.array([ ... [0.7, 0.2, 0.1], ... [0.4, 0.3, 0.3], ... [0.1, 0.8, 0.1], ... [0.2, 0.3, 0.5], ... [0.4, 0.4, 0.2], ... [0.1, 0.2, 0.7], ... ]) >>> average_precision_score(y_true, y_scores) 0.77