Optimera tröskelvärdet
Du har hört att standardvärdet 0,5 maximerar accuracy i teorin, men vill undersöka hur det fungerar i praktiken. Därför provar du ett antal olika tröskelvärden för att se vilken accuracy du uppnår, och på så sätt hitta det bäst presterande tröskelvärdet. Du upprepar sedan samma experiment för F1-poängen. Är 0,5 det optimala tröskelvärdet? Och är det optimala tröskelvärdet för accuracy detsamma som för F1? Ta reda på det! Du har en scores-matris tillgänglig, skapad genom att poängsätta testdata. De sanna etiketterna för testdata finns också tillgängliga som y_test. Dessutom är två numpy-funktioner förinstallerade: argmin() och argmax(), som returnerar indexet för det minsta respektive det största värdet i en array, tillsammans med måtten accuracy_score() och f1_score().
Den här övningen är en del av kursen
Att designa maskininlärningsflöden i Python
Övningsinstruktioner
- Skapa ett intervall av tröskelvärden som innehåller 0.0, 0.25, 0.5, 0.75 och 1.0.
- Använd dubbel listförståelse för att lagra prediktionerna för varje tröskelvärde i intervallet ovan. Kom ihåg att du kan hämta etiketter från en scores-matris med ett tröskelvärde
thrmed hjälp av[s[1] > thr for s in scores]. - Iterera igenom listan och beräkna accuracy för varje tröskelvärde. Upprepa sedan för F1-poängen.
- Använd antingen
argmin()ellerargmax()för att hitta det optimala tröskelvärdet för accuracy respektive F1.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)])