CommencerCommencer gratuitement

Optimiser le seuil

Vous avez entendu dire que la valeur par défaut de 0,5 maximise théoriquement l’accuracy, mais vous souhaitez vérifier ce qu’il en est en pratique. Vous testez donc plusieurs valeurs de seuil pour observer l’accuracy obtenue et déterminer le seuil le plus performant. Vous répétez l’expérience pour le score F1. 0,5 est-il le seuil optimal ? Le seuil optimal pour l’accuracy et pour le F1 est-il le même ? À vous de jouer ! Vous disposez d’une matrice scores issue du scoring des données de test. Les étiquettes de vérité terrain pour les données de test sont disponibles sous y_test. Enfin, deux fonctions numpy sont préchargées, argmin() et argmax(), qui renvoient respectivement l’indice de la valeur minimale et maximale dans un tableau, ainsi que les métriques accuracy_score() et f1_score().

Cet exercice fait partie du cours

Concevoir des workflows de Machine Learning en Python

Afficher le cours

Instructions

  • Créez un ensemble de valeurs de seuil comprenant 0.0, 0.25, 0.5, 0.75 et 1.0.
  • À l’aide d’une double compréhension de liste, stockez les prédictions pour chaque valeur de seuil de l’ensemble ci-dessus. Rappelez-vous que l’on peut obtenir des étiquettes à partir d’une matrice de scores avec un seuil thr via [s[1] > thr for s in scores].
  • Parcourez cette liste et calculez l’accuracy pour chaque seuil. Répétez pour le score F1.
  • À l’aide de argmin() ou argmax(), trouvez le seuil optimal pour l’accuracy, puis pour le F1.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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)])
Modifier et exécuter le code