Comment calculer le score F1 en Python (y compris un exemple)
Lors de l’utilisation de modèles de classification dans l’apprentissage automatique, une métrique courante que nous utilisons pour évaluer la qualité du modèle est le score F1 .
Cette métrique est calculée comme suit :
Score F1 = 2 * (Précision * Rappel) / (Précision + Rappel)
où:
- Précision : Corriger les prédictions positives par rapport au total des prédictions positives
- Rappel : Corriger les prédictions positives par rapport au total des positifs réels
Par exemple, supposons que nous utilisions un modèle de régression logistique pour prédire si 400 joueurs de basket-ball universitaires différents seront recrutés ou non dans la NBA.
La matrice de confusion suivante résume les prédictions faites par le modèle :
Voici comment calculer le score F1 du modèle :
Précision = Vrai Positif / (Vrai Positif + Faux Positif) = 120/ (120+70) = 0,63157
Rappel = Vrai Positif / (Vrai Positif + Faux Négatif) = 120 / (120+40) = 0,75
Score F1 = 2 * (.63157 * .75) / (.63157 + .75) = . 6857
L’exemple suivant montre comment calculer le score F1 pour ce modèle exact en Python.
Exemple : Calcul du score F1 en Python
Le code suivant montre comment utiliser la fonction f1_score() du package sklearn en Python pour calculer le score F1 pour un tableau donné de valeurs prédites et de valeurs réelles.
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
On voit que le score F1 est de 0,6857 . Cela correspond à la valeur que nous avons calculée manuellement plus tôt.
Remarque : Vous pouvez trouver la documentation complète de la fonction f1_score() ici .
Notes sur l’utilisation des scores F1
Si vous utilisez le score F1 pour comparer plusieurs modèles, le modèle avec le score F1 le plus élevé représente le modèle le plus à même de classer les observations en classes.
Par exemple, si vous ajustez un autre modèle de régression logistique aux données et que ce modèle a un score F1 de 0,75, ce modèle sera considéré comme meilleur car il a un score F1 plus élevé.
Ressources additionnelles
Comment effectuer une régression logistique en Python
Comment créer une matrice de confusion en Python
Comment calculer la précision équilibrée en Python
Score F1 vs précision : lequel devriez-vous utiliser ?