ÎncepețiÎncepe gratuit

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 numpyargmin() ș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

Vezi cursul

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 thr este 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() sau argmax(), 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)])
Editează și rulează codul