BaşlayınÜcretsiz Başlayın

Eşiği optimize etme

Varsayılan 0.5 değerinin teoride accuracy’yi maksimize ettiğini duydun, ama pratikte neler olduğuna bakmak istiyorsun. Bu yüzden farklı eşik değerlerini dene, her biri için elde ettiğin accuracy’yi gör ve en iyi performans veren eşiği belirle. Aynı deneyi F1 skoru için de tekrarla. 0.5 gerçekten en iyi eşik mi? Accuracy ve F1 için en iyi eşik aynı mı? Hadi bulalım! Test verisini skorlayarak elde edilmiş bir scores matrisi elinde var. Test verisinin gerçek etiketleri de y_test olarak mevcut. Son olarak, iki numpy fonksiyonu önceden yüklendi: argmin() ve argmax(); bunlar bir dizide sırasıyla minimum ve maksimum değerin indeksini döndürür. Ayrıca accuracy_score() ve f1_score() metrikleri de hazır.

Bu egzersiz

Python'da Machine Learning İş Akışları Tasarlama

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • 0.0, 0.25, 0.5, 0.75 ve 1.0’ı içeren bir eşik aralığı oluştur.
  • Çift liste kavramsallaştırması (double list comprehension) ile yukarıdaki aralıktaki her eşik değeri için tahminleri sakla. Bir skorlar matrisi için thr eşiği kullanarak etiket elde etmenin [s[1] > thr for s in scores] ile mümkün olduğunu unutma.
  • Bu listeyi dolaş ve her eşik için accuracy’yi hesapla. Aynısını F1 skoru için de tekrarla.
  • argmin() veya argmax() kullanarak accuracy için ve F1 için en iyi (optimal) eşiği bul.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

# 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)])
Kodu Düzenle ve Çalıştır