[PYTHON] Über die durchschnittliche Option von sklearn.metrics.f1_score

Was ist f1 Punktzahl?

f1 = \frac{2 \times Recall \times Precision}{Recall + Precision} = \frac{1}{\frac{1}{Recall} \times \frac{1}{Precison}} = \frac{2 \times TP}{2 \times TP + FP + FN}

Es ist ein Index des Gleichgewichts zwischen Rückruf (Rückrufrate, Empfindlichkeit) und Präzision (Konformität, Genauigkeit), angegeben durch. Da es sich um einen harmonisierten Durchschnitt handelt, ist die Punktzahl niedrig, wenn einer der beiden extrem niedrig ist.

Klassifizierung mehrerer Klassen

Klassifizieren Sie zur Vereinfachung in 3 Klassen (4 oder mehr Klassen können auf die gleiche Weise berücksichtigt werden).

Erwartete Klasse
a b c
a 10 3 5
Richtige Antwortklasse b 4 20 3
c 4 3 15

Wenn es eine solche Verwirrungsmatrix gibt, werden TP, FP und FN wie folgt definiert.

Klasse TP FP FN
a 10 8 8
b 20 6 7
c 15 8 7

FP ist die Summe der vertikalen Elemente und FN ist die Summe der horizontalen Elemente.

sklearn.metrics.f1_score [https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html] Wenn Sie sich () ansehen, sehen Sie die Optionen "binär", "Mikro", "Makro", "gewichtet", "Samples" existiert. (Gleiches gilt für Recall_score und Precision_score) "binär" wird bei der binären Klassifizierung verwendet. Andere werden unten beschrieben.

"micro"

  1. Berechnen Sie TP, FP, FN als Ganzes.

    TP FP FN
    45 22 22
  2. Berechnen Sie mit dem erhaltenen TP, FP.FN. $f1 = \frac{2 \times TP}{2 \times TP + FP + FN} = \frac{90}{90+22+22} = 0.67164179104\dots$

"macro"

  1. Berechnen Sie Rückruf und Präzision für jede Klasse

    Klasse Recall Precision
    a \frac{10}{18} \frac{10}{18}
    b \frac{20}{27} \frac{20}{26}
    c \frac{15}{22} \frac{15}{23}
  2. Berechnen Sie den durchschnittlichen Rückruf und die Genauigkeit

    Recall Precision
    \frac{1}{3}\sum{Recall} \frac{1}{3}\sum{Precision}
  3. Berechnen Sie f1 mit dem berechneten Durchschnitt

    \frac{1}{\frac{1}{\frac{1}{3}\sum{Recall}} \times \frac{1}{\frac{1}{3}\sum{Precision}}}

"weighted"

  1. Multiplizieren Sie die Anzahl der Daten in jeder Klasse mit dem individuellen Rückruf, Präzision

    Klasse Recall Precision
    a \frac{10}{18} \times 18 \frac{10}{18}\times 18
    b \frac{20}{27}\times 18 \frac{20}{26}\times 18
    c \frac{15}{22}\times 18 \frac{15}{23}\times 18
  2. Teilen Sie die Summe aus Rückruf und Präzision durch die Gesamtzahl der Daten

    Recall Precision
    \frac{1}{67}\sum{Recall} \frac{1}{67}\sum{Precision}
  3. Berechnen Sie f1 mit dem berechneten Durchschnitt

    \frac{1}{\frac{1}{\frac{1}{67}\sum{Recall}} \times \frac{1}{\frac{1}{67}\sum{Precision}}}

"samples" Ich bin mir nicht sicher, also werde ich es hinzufügen, sobald ich es verstehe.

Recommended Posts

Über die durchschnittliche Option von sklearn.metrics.f1_score
Über den Test
Über die Warteschlange
Über den Unterschied zwischen "==" und "is" in Python
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
In Python sortieren. Lassen Sie uns als nächstes über den Algorithmus nachdenken.
Über das Testen bei der Implementierung von Modellen für maschinelles Lernen
Über die Ineffizienz der Datenübertragung im luigi on-memory
Informationen zur Entfaltungsfunktion
Über den Servicebefehl
Über die übersichtliche Anordnung in der Importreihenfolge von Flake8
Informationen zur Option --enable-shared beim Erstellen von Python unter Linux
Über die Verwirrungsmatrix
Über das Besuchermuster
Über __all__ in Python
Ein Memorandum über die Umsetzung von Empfehlungen in Python
Informationen zu der Nummer (Abschnittsnummer) in (), die vom Linux-Befehl man angezeigt wird
Finden Sie den Durchschnitt / die Standardabweichung der Helligkeitswerte im Bild
Finde Fehler in Python
Über das Python-Modul venv
Über die Aufzählungsfunktion (Python)
Über das Problem der reisenden Verkäufer
In der Liste verfügbare Methoden
Über das Verständnis des 3-Punkt-Lesers [...]
Über die Komponenten von Luigi
Über die Funktionen von Python
Über "für _ in range ():" von Python
Ich habe die Berechnungszeit des in Python geschriebenen gleitenden Durchschnitts verglichen
Geben und meinen Sie die Einschränkungsoption in scipy.optimize.minimize
Überlegen Sie, warum Kubernetes als "Linux in der Cloud-Welt" beschrieben wird.