Exercices Machine Learning Courbe ROC et AUC
🎉

Bravo!

Intermédiaire 🧠 Fondamentaux 20 XP 0 personnes ont réussi

Courbe ROC et AUC

L'AUC-ROC est la metrique reine en classification binaire. Elle repond a une question simple : si tu prends un positif et un negatif au hasard, quelle est la probabilite que le modele donne un score plus eleve au positif ? Un AUC de 1.0 signifie que le modele distingue parfaitement les classes, 0.5 signifie qu'il fait du pile ou face.

Un AUC de 1.0 = modèle parfait. Un AUC de 0.5 = modèle aleatoire (pile ou face). Un AUC entre 0.7 et 0.8 est correct, au-dessus de 0.8 c'est bon, au-dessus de 0.9 c'est excellent.

Pour calculer l'AUC, tu as besoin des probabilites predites (pas des classes), car la courbe ROC trace comment le taux de vrais positifs et de faux positifs varient selon le seuil.

from sklearn.metrics import roc_auc_score, roc_curve
auc = roc_auc_score(y_vrai, probabilites_classe_1)
fpr, tpr, seuils = roc_curve(y_vrai, probabilites_classe_1)

Écris une fonction calculer_roc_auc(y_vrai, y_probas) ou y_probas est un array de probabilites pour la classe 1. Renvoie un dictionnaire avec :
'auc' : le score AUC (float)
'fpr' : le tableau des taux de faux positifs
'tpr' : le tableau des taux de vrais positifs

Tests (4/4)

Modèle parfait
import numpy as np
result = calculer_roc_auc([0, 0, 1, 1], [0.1, 0.2, 0.8, 0.9])
assert result['auc'] == 1.0
AUC entre 0 et 1
import numpy as np
result = calculer_roc_auc([0, 1, 0, 1, 0, 1], [0.3, 0.7, 0.4, 0.6, 0.2, 0.8])
assert 0 <= result['auc'] <= 1
FPR commence a 0
import numpy as np
result = calculer_roc_auc([0, 0, 1, 1], [0.1, 0.4, 0.6, 0.9])
assert result['fpr'][0] == 0.0
TPR finit a 1
import numpy as np
result = calculer_roc_auc([0, 0, 1, 1], [0.1, 0.4, 0.6, 0.9])
assert result['tpr'][-1] == 1.0

Indices (3 disponibles)

solution.py