Hoe de f1-score in python te berekenen (inclusief voorbeeld)
Bij het gebruik van classificatiemodellen in machine learning is een veelgebruikte maatstaf die we gebruiken om de modelkwaliteit te evalueren de F1-score .
Deze statistiek wordt als volgt berekend:
F1-score = 2 * (Precisie * Recall) / (Precisie + Recall)
Goud:
- Nauwkeurigheid : corrigeer positieve voorspellingen ten opzichte van het totale aantal positieve voorspellingen
- Herinnering : positieve voorspellingen corrigeren ten opzichte van het totale aantal werkelijke positieve resultaten
Stel dat we bijvoorbeeld een logistisch regressiemodel gebruiken om te voorspellen of 400 verschillende universiteitsbasketbalspelers wel of niet zullen worden opgeroepen voor de NBA.
De volgende verwarringsmatrix vat de voorspellingen van het model samen:
Zo berekent u de F1-score van het model:
Nauwkeurigheid = waar positief / (waar positief + fout positief) = 120/ (120+70) = 0,63157
Terugroepen = waar positief / (waar positief + fout negatief) = 120 / (120+40) = 0,75
F1-score = 2 * (.63157 * .75) / (.63157 + .75) = . 6857
Het volgende voorbeeld laat zien hoe u de F1-score voor dit exacte model in Python kunt berekenen.
Voorbeeld: Berekening van de F1-score in Python
De volgende code laat zien hoe u de functie f1_score() van het sklearn- pakket in Python kunt gebruiken om de F1-score te berekenen voor een gegeven reeks voorspelde waarden en werkelijke waarden.
import numpy as np from sklearn. metrics import f1_score #define array of actual classes actual = np. repeat ([1, 0], repeats=[160, 240]) #define array of predicted classes pred = np. repeat ([1, 0, 1, 0], repeats=[120, 40, 70, 170]) #calculate F1 score f1_score(actual, pred) 0.6857142857142857
We zien dat de F1-score 0,6857 is. Dit komt overeen met de waarde die we eerder handmatig hebben berekend.
Opmerking : u kunt de volledige documentatie voor de functie f1_score() hier vinden.
Opmerkingen over het gebruik van F1-scores
Als u de F1-score gebruikt om meerdere modellen te vergelijken, vertegenwoordigt het model met de hoogste F1-score het model dat het beste in staat is waarnemingen in klassen in te delen.
Als u bijvoorbeeld een ander logistisch regressiemodel aan de gegevens koppelt en dat model een F1-score van 0,75 heeft, wordt dat model als beter beschouwd omdat het een hogere F1-score heeft.
Aanvullende bronnen
Hoe logistieke regressie uit te voeren in Python
Hoe je een verwarringsmatrix creëert in Python
Hoe gebalanceerde precisie in Python te berekenen
F1-score versus nauwkeurigheid: welke moet u gebruiken?