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_true binä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-Indikatoren y_true ist pos_label auf 1 festgelegt.

sample_weightarray-like der Form (n_samples,), Standardwert=None

Stichprobengewichte.

Gibt zurück:
average_precisionfloat

Average Precision Score.

Siehe auch

roc_auc_score

Berechnet die Fläche unter der ROC-Kurve.

precision_recall_curve

Berechne Präzisions-Recall-Paare für verschiedene Wahrscheinlichkeitsschwellen.

PrecisionRecallDisplay.from_estimator

Zeichnet die Precision-Recall-Kurve mithilfe eines Schätzers und von Daten.

PrecisionRecallDisplay.from_predictions

Zeichnet 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