Anasayfa / Makine Öğrenmesi / Model Değerlendirme / Hata Matrisi (Confusion Matrix) Python Uygulama

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.

Hakkında Erkan ŞİRİN

2014'ten beri hem akademik alanda hem de sektörde pratik anlamda büyük veri ve veri bilimi ile ilgili çalışmalar yürütmektedir. Halihazırda İmpektra Bilişim A.Ş.'de büyük veri yöneticisi olarak çalışmakta olup aynı zamanda Gazi Üniversitesi Yönetim Bilişim Sistemleri doktora öğrencisidir. Büyük veri ve veri bilimi ile ilgili birçok kurum ve şirkete eğitimler vermekte ve projeler icra etmektedir. Çalışma alanları: büyük veri platformlarının kurulum ve yönetimi, büyük veri üzerinde makine öğrenmesi, olağan dışılık tespiti, sahtecilik tespiti, veri hazırlama sürecidir.

GÖZ ATMAK İSTEYEBİLİRSİNİZ

Tensorflow Lite Modeli ile Colab Üzerinden Görüntü Sınıflandırma: Derin Öğrenme Uygulaması

Bildiğiniz üzere derin ağlarda / katmanlarda öğrenme işlemine biz kabaca derin öğrenme diyoruz. Bu açıklama …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir