Aan de slagGa gratis aan de slag

De drempel optimaliseren

Je hebt gehoord dat de standaardwaarde 0,5 in theorie de accuracy maximaliseert, maar je wilt testen wat er in de praktijk gebeurt. Daarom probeer je een aantal verschillende drempelwaarden uit om te zien welke accuracy je krijgt, en zo de best presterende drempel te bepalen. Je herhaalt dit experiment voor de F1-score. Is 0,5 de optimale drempel? Is de optimale drempel voor accuracy en voor de F1-score hetzelfde? Ga aan de slag en ontdek het! Je hebt een scores-matrix beschikbaar, verkregen door de testgegevens te scoren. De ground-truthlabels voor de testgegevens zijn ook beschikbaar als y_test. Tot slot zijn twee numpy-functies voorgeladen, argmin() en argmax(), die respectievelijk de index van de minimum- en maximumwaarden in een array ophalen, naast de metriekfuncties accuracy_score() en f1_score().

Deze oefening maakt deel uit van de cursus

Machine Learning-workflows ontwerpen in Python

Cursus bekijken

Oefeninstructies

  • Maak een reeks drempelwaarden die 0,0, 0,25, 0,5, 0,75 en 1,0 bevat.
  • Sla via dubbele list comprehension de voorspellingen op voor elke drempelwaarde in bovenstaande reeks. Onthoud dat je labels kunt verkrijgen voor een scores-matrix met een drempel thr via [s[1] > thr for s in scores].
  • Loop door die lijst en bereken de accuracy voor elke drempel. Herhaal dit voor de F1-score.
  • Gebruik argmin() of argmax() om de optimale drempel voor accuracy en voor F1 te vinden.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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)])
Code bewerken en uitvoeren