Hoe gebalanceerde precisie in python te berekenen met behulp van sklearn
Evenwichtige nauwkeurigheid is een maatstaf die we kunnen gebruiken om de prestaties van een classificatiemodel te evalueren.
Het wordt als volgt berekend:
Evenwichtige nauwkeurigheid = (gevoeligheid + specificiteit) / 2
Goud:
- Gevoeligheid : het “echte positieve percentage” – het percentage positieve gevallen dat het model kan detecteren.
- Specificiteit : Het “echte negatieve percentage” – het percentage negatieve gevallen dat het model kan detecteren.
Deze metriek is vooral handig wanneer de twee klassen niet in evenwicht zijn, dat wil zeggen dat de ene klasse veel meer voorkomt dan de andere.
Stel bijvoorbeeld dat een sportanalist een logistisch regressiemodel gebruikt 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:
Om de evenwichtige nauwkeurigheid van het model te berekenen, berekenen we eerst de gevoeligheid en specificiteit:
- Gevoeligheid : het “echte positieve percentage” = 15 / (15 + 5) = 0,75
- Specificiteit : Het “echte negatieve percentage” = 375 / (375 + 5) = 0,9868
We kunnen de gebalanceerde precisie dan als volgt berekenen:
- Evenwichtige nauwkeurigheid = (gevoeligheid + specificiteit) / 2
- Gebalanceerde nauwkeurigheid = (0,75 + 9868) / 2
- Gebalanceerde nauwkeurigheid = 0,8684
De gebalanceerde nauwkeurigheid van het model blijkt 0,8684 te zijn.
In het volgende voorbeeld ziet u hoe u de gebalanceerde nauwkeurigheid voor dit specifieke scenario kunt berekenen met behulp van de functie Balanced_accuracy_score() uit de sklearn- bibliotheek in Python.
Voorbeeld: Evenwichtige precisie berekenen in Python
De volgende code laat zien hoe u een array van voorspelde klassen en een array van daadwerkelijke klassen definieert, en vervolgens de gebalanceerde nauwkeurigheid van een model in Python berekent:
import numpy as np from sklearn. metrics import balanced_accuracy_score #define array of actual classes actual = np. repeat ([1, 0], repeats=[20, 380]) #define array of predicted classes pred = np. repeat ([1, 0, 1, 0], repeats=[15, 5, 5, 375]) #calculate balanced accuracy score balanced_accuracy_score(actual, pred) 0.868421052631579
De uitgebalanceerde precisie is 0,8684 . Dit komt overeen met de waarde die we eerder handmatig hebben berekend.
Opmerking : u kunt de volledige documentatie voor de functie Balanced_accuracy_score() hier vinden.
Aanvullende bronnen
Een inleiding tot evenwichtige nauwkeurigheid
Hoe logistieke regressie uit te voeren in Python
Hoe de F1-score in Python te berekenen