Kesinlik
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 67/112
- 5 dk
Kesinlik (precision), pozitif tahminlerin doğruluk oranıdır.
Kesinlik (precision)
Kesinlik, model "pozitif" dediğinde ne kadar haklı olduğunu ölçer: TP / (TP + FP). Yanlış alarmların pahalı olduğu yerlerde önemlidir.
from sklearn.metrics import precision_score
y_true = [1, 1, 0, 0, 0]
y_pred = [1, 1, 1, 0, 0]
print(precision_score(y_true, y_pred)) # 2 / 3 = 0.667Spam filtresi örneği: kesinlik düşükse önemli e-postalar spam klasörüne düşer.
Pozitif tahmin yoksa
Model hiç pozitif demezse payda sıfırdır ve kesinlik tanımsızdır. scikit-learn bu durumda 0 döndürüp uyarı verir; zero_division ile davranış seçilir:
print(precision_score([1, 0], [0, 0], zero_division=0)) # 0.0Çok sınıflı problemde average parametresi gerekir: "macro" sınıf ortalaması, "weighted" sınıf büyüklüğüne göre ağırlıklı ortalama.
Uygulama Kesinliği hesapla
Verilen etiketlerde kesinliği precision_score ile hesapla ve round(..., 3) ile yazdır. Ardından aynı değeri TP / (TP + FP) ile elle hesapla (TP ve FP'yi döngüyle ya da zip ile say) ve yazdır.
Başlangıç kodu
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
y_true = [1, 1, 1, 1, 0, 0, 0, 0, 0, 0]
y_pred = [1, 1, 1, 0, 1, 0, 0, 0, 0, 0]
# buraya yazÖrnek çözüm
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
y_true = [1, 1, 1, 1, 0, 0, 0, 0, 0, 0]
y_pred = [1, 1, 1, 0, 1, 0, 0, 0, 0, 0]
print(round(precision_score(y_true, y_pred), 3))
tp = sum(1 for t, p in zip(y_true, y_pred) if t == 1 and p == 1)
fp = sum(1 for t, p in zip(y_true, y_pred) if t == 0 and p == 1)
print(round(tp / (tp + fp), 3))Beklenen çıktı
0.75 0.75
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 TP=30, FP=10 ise kesinlik kaçtır?
- 0.75 Doğru cevap
- 0.25
- 0.33
- 3.0
Açıklama: 30 / (30 + 10) = 0.75.
2 Çok sınıflı kesinliğin sınıf ortalamasını al.
p = precision_score(y_true, y_pred, average=____)
p = precision_score(y_true, y_pred, average="macro")
Açıklama: "macro" her sınıfa eşit ağırlık verir.
3 Kavramları eşleştir.
| Kavram | Anlamı |
|---|---|
kesinlik |
TP / (TP + FP) |
düşük kesinlik |
Çok yanlış alarm |
zero_division |
Sıfır payda davranışı |
average="macro" |
Sınıf ortalaması |