Hata Matrisi (Confusion Matrix) Python Uygulama

Daha anlaşılır olması için şöyle basit bir örnek yapalım. Aşağıda y_pred tahmin sonuçlarını, y_test gerçek sonuçları ve Sonuç ise hata matrisindeki karşılığı ifade etsin. Bu tabloyu tamamen kafadan attık. Çünkü en baştan veri oluştur, böl, eğit, test et vs. uğraşmayalım doğrudan hata matrisine dalalım istedik. TP,TN,FP,FN gibi kısaltmaların ne anlama geldiği bu yazıda açıklanmıştı. Sıkma tablomuz:

y_predy_testSonuç
11TP
10FN
11TP
01FP
00TN
10FN
01FP
10FN
00TN
00TN
00TN
11TP
00TN
00TN
11TP
11TP
00TN
00TN
10FN
11TP
00TN
00TN
00TN
00TN
10FN
10FN
01FP

Hata matrisi oluşturmak için Python kodlarımız:

# Gerekli kütüphane
from sklearn import metrics
# Sıkma listemizi oluşturalım
y_pred2 = [1,1,1,0,0,1,0,1,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,0]
y_test2 = [1,0,1,1,0,0,1,0,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1]
# Python listemizi pandas series yapalım
y_pred2 = pd.Series.from_array(y_pred2)
# Python listemizi pandas series yapalım
y_test2 = pd.Series.from_array(y_test2)
# Hata matrisini oluşturalım
metrics.confusion_matrix(y_test2, y_pred2)
array([[12, 6],
      [ 3, 6]])

Elde ettiğimiz hata matrisini daha iyi anlamak için aşağıda şekil üzerinde görelim:

Hata Matrisinden Elde Edilen Bazı Metrikler

Doğruluk (Classification Accuracy)

Doğruluk = TN + TP / TOPLAM idi. Şimdi Python ile bunu yapalım:

dogruluk = metrics.accuracy_score(y_test2, y_pred2)
dogruluk
0.66666666666666663

Hata Oranı (Error Rate / Misclassification Rate)

Hata Oranı = FN + FP / TOPLAM veya 1 - dogruluk

1 - metrics.accuracy_score(y_test2, y_pred2)
0.33333333333333337

Precision

Precision = TP/(FP+TP) idi. Yani pozitif tahminlerin toplam pozitiflere oranı.

metrics.precision_score(y_test2, y_pred2)
0.5

Bunlar gibi başka metrikler de var. Hata matrisi bize sınıflandırma modelini değerlendirmede daha genel bir çerçeve verir. Genelde accuracy kullanılır. Ancak ihtiyaca göre hangi metriğin daha önemli olduğu değişebilir. Örneğin istenmeyen e-posta filtrelemede doğru postalardan ziyade istenmeyen e-postaların ayıklanması istenir. Bu sebeple TP yerine FN önem kazanır. Yani doğruya doğru demenin anlamı yoktur. Önemli olan yanlışa yanlış demek yani FN sonuçlarını yüksek oranda doğru sınıflandırmakla olur. Yani yanlışa yanlış deme başarısı daha önemlidir.

Yazar Hakkında
Toplam 176 yazı
Erkan ŞİRİN
Erkan ŞİRİN
10 yılı aşkın süredir yurtiçi ve yurtdışında sektörde büyük veri mühendisliği, platform yönetimi ve makine öğrenmesi ile ilgili çalışmalar yürütmekte ve aynı zamanda birçok kurum ve şirkete danışmanlık ve eğitimler vermektedir. Çalışma alanları: Data ve MLOps platformları, gerçek zamanlı veri işleme, değişen veriyi yakalama (CDC) ve Lakehouse.
Yorumlar (Yorum yapılmamış)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara