Hallo ich mit sklearn und um arbeite besser die Metriken zu verstehen, folgte ich das folgende Beispiel precision_score:Wie berechnet sklearn die metrik precision_score?
from sklearn.metrics import precision_score
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
print(precision_score(y_true, y_pred, average='macro'))
das Ergebnis, das ich habe folgendes wurde:
0.222222222222
Ich verstehe dass sklearn berechnen, die folgenden Schritte führen:
- für Etiketten 0 Präzision tp/(tp + fp) = 2/(2 + 1) = 0,66
- für Etiketten 1 Präzision ist 0/(0 + 2) = 0
- für Etiketten 2 Präzision 0/(0 + 1) = 0
und schließlich sklearn berechnet Präzision von allen drei Etikett bedeuten: precision = (0.66 + 0 + 0)/3 = 0.22
dieses Ergebnis ist gegeben, wenn wir diese Parameter übernehmen:
precision_score(y_true, y_pred, average='macro')
auf der anderen Seite, wenn wir diese Parameter nehmen, ändert Durchschnitt = ‚Mikro‘:
precision_score(y_true, y_pred, average='micro')
dann erhalten wir:
0.33
und wenn wir 'gewichtete' mittel = nehmen:
precision_score(y_true, y_pred, average='weighted')
dann erhalten wir:
0.22.
Ich verstehe nicht, Nun, wie Sklearn diese Metrik berechnet, wenn der Durchschnittsparameter auf "gewichtet" oder "Mikro" eingestellt ist, I r Ich würde es gerne würdigen, wenn mir jemand eine klare Erklärung dafür geben könnte.
dank ich es schon gelesen, aber ich würde gerne wissen, was durch die Unterstützung gewichtet wird (die Anzahl der wahren Instanzen für jedes Etikett) – neo33
Betrachten Sie es als eine phantastische Art, gewichteten Durchschnitt nach Klasse – Merlin
zu sagen, aber wissen Sie, ob sklearn in der Dokumentation die Empfindlichkeit und Spezifität definieren? – neo33