Exercices Machine Learning Accuracy et classification report
🎉

Bravo!

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

Accuracy et classification report

Ton modele est entraine, il fait des predictions. Mais sont-elles bonnes ? L'accuracy est la metrique la plus intuitive : le pourcentage de bonnes reponses. Mais attention, elle peut etre trompeuse. Si 95% de tes donnees sont de classe 0, un modele qui repond toujours 0 a 95% d'accuracy sans rien avoir appris.

Mais l'accuracy seule peut etre trompeuse. Si 95% de tes données sont de classe 0, un modèle qui predit toujours 0 aura 95% d'accuracy sans rien avoir appris. C'est pour ca qu'on utilise aussi le classification_report, qui donne :
precision : parmi les predictions positives, combien sont correctes
recall : parmi les vrais positifs, combien ont ete trouves
f1-score : la moyenne harmonique de precision et recall

from sklearn.metrics import accuracy_score, classification_report
acc = accuracy_score(y_vrai, y_predit)
report = classification_report(y_vrai, y_predit, output_dict=True)

Écris une fonction evaluer_classification(y_vrai, y_predit) qui renvoie un dictionnaire avec :
'accuracy' : le taux de bonnes predictions (float entre 0 et 1)
'rapport' : le dictionnaire du classification_report (avec output_dict=True)

Tests (4/4)

Accuracy parfaite
result = evaluer_classification([0, 1, 0, 1], [0, 1, 0, 1])
assert result['accuracy'] == 1.0
Accuracy a 50%
result = evaluer_classification([0, 0, 1, 1], [0, 1, 0, 1])
assert abs(result['accuracy'] - 0.5) < 1e-9
Rapport contient accuracy
result = evaluer_classification([0, 1, 0, 1], [0, 1, 0, 0])
assert 'accuracy' in result['rapport']
Rapport contient les classes
result = evaluer_classification([0, 1, 0, 1], [0, 1, 1, 1])
assert '0' in result['rapport'] or 0 in result['rapport']

Indices (3 disponibles)

solution.py