Exercice 84 / 100

ML — Métriques

Évalue un modèle avec précision, rappel, F1-score

Pour évaluer un classifieur, l'accuracy seule ne suffit pas — surtout si les classes sont déséquilibrées. Voici les métriques essentielles.

Matrice de confusion

Pour une classif binaire (positif = 1, négatif = 0) :

Prédit 0 Prédit 1 Réel 0 TN FP Réel 1 FN TP
TP vrai positif correctement prédit positif TN vrai négatif correctement prédit négatif FP faux positif prédit positif à tort ("fausse alerte") FN faux négatif prédit négatif à tort ("manqué")
La matrice de confusion croise ce qui est réel et ce qui est prédit : la précision se lit sur la colonne des positifs prédits, le rappel sur la ligne des positifs réels
from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_true, y_pred) tn, fp, fn, tp = cm.ravel()

Les 3 métriques de base

Précision = TP / (TP + FP) "parmi mes prédictions positives, combien sont vraies ?" → minimise les fausses alertes
Rappel (Recall, Sensitivity) = TP / (TP + FN) "parmi les vrais positifs, combien j'ai trouvé ?" → minimise les manqués
F1-score = 2 × (precision × recall) / (precision + recall) moyenne harmonique : pénalise si l'une est faible

Quand privilégier laquelle ?

Détection de cancer (FN catastrophique) → optimiser le RAPPEL Filtre anti-spam (FP gênant) → optimiser la PRÉCISION Compromis général → F1

Exemple complet

from sklearn.metrics import confusion_matrix, precision_score, recall_score, f1_score
y_true = np.array([1, 0, 1, 1, 0, 1, 0, 0, 1, 1]) y_pred = np.array([1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
print(confusion_matrix(y_true, y_pred)) print(f'Precision: {precision_score(y_true, y_pred):.2f}') print(f'Recall: {recall_score(y_true, y_pred):.2f}') print(f'F1-score: {f1_score(y_true, y_pred):.2f}')

Autres métriques utiles

ROC-AUC qualité globale d'un classifieur, indépendant du seuil PR-AUC préféré pour classes très déséquilibrées
classification_report
affiche precision/recall/F1 par classe

Toujours regarder la matrice de confusion avant de conclure. Une accuracy de 95% sur une classe à 5% positifs peut être... un modèle qui prédit toujours 0.

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →