Optimiser le seuil
On vous a dit que la valeur par défaut de 0,5 maximise l'exactitude en théorie, mais vous voulez vérifier ce qui se passe en pratique. Vous essayez donc plusieurs valeurs de seuil pour voir l'exactitude obtenue et ainsi déterminer le meilleur seuil. Vous répétez l'expérience pour le score F1. Est-ce que 0,5 est le seuil optimal? Le seuil optimal pour l'exactitude et pour le score F1 est-il le même? Allez-y, vérifiez! Vous disposez d'une matrice scores, obtenue en calculant les scores sur les données de test. Les étiquettes de vérité terrain pour les données de test sont aussi disponibles dans y_test. Enfin, deux fonctions de numpy, argmin() et argmax(), sont déjà chargées; elles retournent respectivement l'indice de la valeur minimale et maximale dans un tableau, en plus des mesures accuracy_score() et f1_score().
Cette activité fait partie du cours
Concevoir des flux de travail Machine Learning en Python
Instructions de l’exercice
- Créez un ensemble de valeurs de seuil qui inclut 0,0, 0,25, 0,5, 0,75 et 1,0.
- À l'aide d'une double compréhension de liste, enregistrez les prédictions pour chaque valeur de seuil de l'ensemble ci-dessus. Rappelez-vous qu'on peut obtenir des étiquettes à partir d'une matrice de scores avec un seuil
thrà l'aide de[s[1] > thr for s in scores]. - Parcourez cette liste et calculez l'exactitude pour chaque seuil. Répétez pour le score F1.
- En utilisant
argmin()ouargmax(), trouvez le seuil optimal pour l'exactitude, puis pour le F1.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Create a range of equally spaced threshold values
t_range = ____
# Store the predicted labels for each value of the threshold
preds = [[____ > thr for s in scores] for ____ in ____]
# Compute the accuracy for each threshold
accuracies = [____(____, ____) for p in preds]
# Compute the F1 score for each threshold
f1_scores = [____(____, ____) for p in preds]
# Report the optimal threshold for accuracy, and for F1
print(t_range[____(accuracies)], t_range[____(f1_scores)])