CodeBlanks Logo Icon CodeBlanks

Accuracy

Accuracy, doğru tahminlerin oranını gösterir.

Çok sınıflı doğruluk

Çok sınıflı problemde genel doğruluk iyi görünse de bazı sınıflar kötü tahmin ediliyor olabilir. Sınıf başına doğruluk karmaşıklık matrisinin köşegeninin satır toplamlarına bölünmesiyle bulunur:

cm = confusion_matrix(y_true, y_pred)
print(cm.diagonal() / cm.sum(axis=1))   # her sınıfın kendi doğruluğu

Büyük sınıf iyi, küçük sınıf kötü tahmin ediliyorsa genel doğruluk bunu gizler.

Top-k doğruluk

Çok sınıflı problemlerde (örneğin 1000 sınıflı görüntü tanıma) doğru sınıfın en olası k tahmin arasında olması da başarı sayılabilir:

from sklearn.metrics import top_k_accuracy_score
olasilik = [[0.5, 0.3, 0.2], [0.1, 0.3, 0.6], [0.4, 0.4, 0.2]]
print(top_k_accuracy_score([1, 2, 1], olasilik, k=1))   # 0.333
print(top_k_accuracy_score([1, 2, 1], olasilik, k=2))   # 1.0

Arama ve öneri sistemlerinde "ilk 5 sonuçta doğru var mı?" sorusu tam olarak budur.

Uygulama Sınıf başına doğruluk

Verilen etiketler için genel doğruluğu yazdır. Ardından karmaşıklık matrisinden sınıf başına doğruluğu (cm.diagonal() / cm.sum(axis=1)) round(3) ile yazdır.

Başlangıç kodu

model.py
from sklearn.metrics import accuracy_score, confusion_matrix

y_true = [0, 0, 0, 0, 0, 0, 1, 1, 2, 2]
y_pred = [0, 0, 0, 0, 0, 1, 1, 0, 2, 2]

# buraya yaz

Örnek çözüm

model.py
from sklearn.metrics import accuracy_score, confusion_matrix

y_true = [0, 0, 0, 0, 0, 0, 1, 1, 2, 2]
y_pred = [0, 0, 0, 0, 0, 1, 1, 0, 2, 2]

print(accuracy_score(y_true, y_pred))
cm = confusion_matrix(y_true, y_pred)
print((cm.diagonal() / cm.sum(axis=1)).round(3))

Beklenen çıktı

0.8
[0.833 0.5   1.   ]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 90 örnekli A sınıfının hepsini, 10 örnekli B sınıfının hiçbirini bilen modelin doğruluğu kaçtır?

  • 1.0
  • 0.1
  • 0.9 Doğru cevap
  • 0.5

Açıklama: 90 / 100 = 0.9; ama B sınıfının doğruluğu 0'dır, dengeli doğruluk 0.5 olurdu.

2 Doğru sınıf ilk 3 tahminde mi, ölç.

Soru
top_k_accuracy_score(y_true, olasilik, ____=3)
Cevap
top_k_accuracy_score(y_true, olasilik, k=3)

Açıklama: k, kaç en olası tahminin sayılacağıdır.

3 Ölçüleri eşleştir.

Kavram Anlamı
genel doğruluk Tüm doğruların oranı
sınıf başına doğruluk Köşegen / satır toplamı
top-k doğruluk İlk k içinde doğru
dengeli doğruluk Sınıf doğruluklarının ortalaması

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