Zacznij terazZacznij za darmo

Optymalizacja progu klasyfikacji

Słyszałeś, że domyślna wartość progu 0,5 teoretycznie maksymalizuje dokładność – ale chcesz sprawdzić, jak to wygląda w praktyce. Przetestujesz kilka różnych wartości progu, aby zobaczyć, jaką dokładność uzyskasz, i wskazać najlepiej działający próg. Powtórzysz ten eksperyment dla miary F1. Czy 0,5 to optymalny próg? Czy optymalny próg dla dokładności i dla F1 jest taki sam? Czas to sprawdzić! Masz dostępną macierz scores uzyskaną przez ocenę danych testowych. Prawdziwe etykiety danych testowych są dostępne jako y_test. Dodatkowo załadowane są dwie funkcje numpy: argmin() i argmax(), które zwracają indeks odpowiednio minimalnej i maksymalnej wartości w tablicy, a także metryki accuracy_score() i f1_score().

To ćwiczenie jest częścią kursu

Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Utwórz zakres wartości progu zawierający: 0,0; 0,25; 0,5; 0,75 i 1,0.
  • Za pomocą podwójnego list comprehension zapisz przewidywania dla każdej wartości progu z powyższego zakresu. Pamiętaj, że etykiety z macierzy wyników przy użyciu progu thr można uzyskać wyrażeniem [s[1] > thr for s in scores].
  • Przejdź przez tę listę i oblicz dokładność dla każdego progu. Powtórz to samo dla miary F1.
  • Korzystając z argmin() lub argmax(), wyznacz optymalny próg dla dokładności oraz dla F1.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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)])
Edytuj i uruchom kod