F1-score

Le F1-score est une métrique d’évaluation utilisée en classification qui combine précision (precision) et rappel (recall) en une seule mesure harmonisée. Il est particulièrement utile lorsque tu veux trouver un bon équilibre entre la précision et le rappel, surtout sur des données déséquilibrées.

Le F1-score répond à cette question :
Le modèle est-il à la fois précis ET complet dans ses prédictions positives ?


Formule mathématique

F1-score=2×Preˊcision×RappelPreˊcision+Rappel\text{F1-score} = 2 \times \frac{\text{Précision} \times \text{Rappel}}{\text{Précision} + \text{Rappel}}

Le F1-score est la moyenne harmonique entre la précision et le rappel. Il est compris entre 0 et 1 :

Fonctions :

  • f1_score()

    La fonction f1_score() permet de calculer la mesure F1, qui est la moyenne harmonique entre la précision et le rappel d'un modèle de classification.

    Importation :

    from sklearn.metrics import f1_score

    Attributs :

    Paramètre Type Valeur par défaut Description
    y_true array-like Les vraies étiquettes (valeurs cibles).
    y_pred array-like Les étiquettes prédites par le modèle.
    labels array-like, optional None Liste des étiquettes de classe à prendre en compte pour le calcul. Si None, toutes les classes présentes dans les prédictions sont utilisées.
    pos_label str or int, optional 1 Spécifie l'étiquette de la classe positive. Par défaut, il s'agit de 1.
    average str, optional None Le type de moyenne à calculer : - 'binary' : pour les problèmes binaires. - 'micro' : calcule le F1 globalement pour toutes les classes. - 'macro' : calcule le F1 de chaque classe individuellement, puis en fait la moyenne. - 'weighted' : calcule la moyenne pondérée des F1, en fonction du support de chaque classe.
    sample_weight array-like, optional None Poids à attribuer aux échantillons lors du calcul.

    Exemple de code :

    from sklearn.metrics import f1_score
    
    # Vraies étiquettes (y_true) et étiquettes prédites (y_pred)
    y_true = [0, 1, 1, 0, 1, 1, 0, 0, 1, 0]
    y_pred = [0, 0, 1, 0, 1, 1, 0, 1, 1, 0]
    
    # Calcul du score F1
    f1 = f1_score(y_true, y_pred)
    
    # Affichage du score F1
    print("Score F1 : ", f1)
    Résultat du code

    Explication du code :

    1. Vraies étiquettes (y_true) : Ce sont les étiquettes réelles du jeu de données. Dans cet exemple, y_true = [0, 1, 1, 0, 1, 1, 0, 0, 1, 0] représente les étiquettes correctes de 10 instances.

    2. Étiquettes prédites (y_pred) : Ce sont les étiquettes que le modèle a prédites pour ces mêmes instances, par exemple, y_pred = [0, 0, 1, 0, 1, 1, 0, 1, 1, 0].

    3. Calcul du score F1 : La fonction f1_score(y_true, y_pred) calcule la moyenne harmonique entre la précision et le rappel. Cela permet d'évaluer les performances du modèle en équilibrant la capacité à faire des prédictions positives correctes (précision) et la capacité à identifier toutes les instances positives (rappel).

    4. Affichage : Le résultat du score F1 est affiché. Ce score peut varier de 0 (mauvaise performance) à 1 (bonne performance). Un score F1 élevé indique que le modèle est équilibré en termes de précision et de rappel.

    Applications :

    • Problèmes avec un déséquilibre de classes : Le score F1 est particulièrement utile dans les scénarios où il y a un déséquilibre important entre les classes, comme dans la détection de fraude ou la reconnaissance de maladies rares.

    • Évaluation de modèles de classification binaire ou multi-classe : Il est couramment utilisé pour évaluer les performances des modèles de classification dans des contextes où il est essentiel d'équilibrer à la fois les faux positifs et les faux négatifs.