CodeBlanks Logo Icon CodeBlanks

Kesinlik

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.667

Spam 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

model.py
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

model.py
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.

Soru
p = precision_score(y_true, y_pred, average=____)
Cevap
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ı

Başlangıç bölümündeki tüm dersler