Optimizarea pragului de decizie
Ai auzit că valoarea implicită de 0,5 maximizează acuratețea în teorie, dar vrei să testezi ce se întâmplă în practică. Prin urmare, încerci mai multe valori diferite ale pragului de decizie, pentru a vedea ce acuratețe obții și a determina astfel valoarea optimă. Repeți experimentul și pentru scorul F1. Este 0,5 pragul optim? Pragul optim pentru acuratețe și cel pentru scorul F1 sunt identice? Află chiar acum! Ai la dispoziție o matrice scores, obținută prin scorarea datelor de test. Etichetele reale ale datelor de test sunt disponibile ca y_test. În plus, sunt preîncărcate două funcții numpy – argmin() și argmax() –, care returnează indexul valorii minime, respectiv maxime dintr-un array, alături de metricile accuracy_score() și f1_score().
Acest exercițiu face parte din cursul
Proiectarea fluxurilor de lucru pentru Machine Learning în Python
Instrucțiuni pentru exercițiu
- Creează un interval de valori ale pragului care să includă 0,0, 0,25, 0,5, 0,75 și 1,0.
- Folosind o comprehensiune dublă de liste, stochează predicțiile pentru fiecare valoare a pragului din intervalul de mai sus. Reține că obținerea etichetelor dintr-o matrice de scoruri folosind un prag
threste posibilă cu[s[1] > thr for s in scores]. - Parcurge această listă și calculează acuratețea pentru fiecare prag. Repetă același lucru pentru scorul F1.
- Folosind
argmin()sauargmax(), găsește pragul optim pentru acuratețe și, respectiv, pentru F1.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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)])