Optimalizace prahu
Slyšel/a jsi, že výchozí hodnota 0,5 teoreticky maximalizuje přesnost, ale chceš ověřit, jak to funguje v praxi. Proto otestuješ různé hodnoty prahu a zjistíš, jaké přesnosti dosáhneš – a tím určíš optimální hodnotu prahu. Celý postup pak zopakovacíš pro skóre F1. Je 0,5 skutečně optimální práh? Je optimální práh pro přesnost a pro F1 stejný? Pusť se do toho a zjisti to! K dispozici máš matici scores získanou ohodnocením testovacích dat. Skutečné štítky pro testovací data jsou dostupné jako y_test. Předem jsou načteny dvě funkce z numpy: argmin() a argmax(), které vrátí index minimální, resp. maximální hodnoty v poli – spolu s metrikami accuracy_score() a f1_score().
Toto cvičení je součástí kurzu
Designing Machine Learning Workflows in Python
Pokyny k cvičení
- Vytvoř rozsah hodnot prahu, který bude obsahovat 0,0, 0,25, 0,5, 0,75 a 1,0.
- Pomocí dvojitého list comprehension ulož predikce pro každou hodnotu prahu z výše uvedeného rozsahu. Připomeň si, že získání štítků z matice skóre pomocí prahu
thrje možné zápisem[s[1] > thr for s in scores]. - Projdi tento seznam a vypočítej přesnost pro každý práh. Totéž zopakuj pro skóre F1.
- Pomocí
argmin()neboargmax()najdi optimální práh pro přesnost a pro F1.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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)])