Python ile Doğruluk Matrisinin Oluşturulması ve Kullanımı

Doğruluk Matrisi Nedir?

Doğruluk matrisi (accuracy matrix), makine öğrenmesi ve istatistik alanında sıkça kullanılan önemli bir değerlendirme aracıdır. Özellikle sınıflandırma problemlerinde modelin performansını analiz etmek için kullanılır. Doğruluk matrisinin temel amacı, doğru tahminlerin sayısını ve yanlış tahminlerin sayısını ortaya koyarak modelin genel başarısını gözler önüne sermektir. Bu matris, modelin yanı sıra hangi sınıfları ne ölçüde doğru tahmin ettiğini veya hangi sınıflarda hata yaptığını gösterir.

Bir doğruluk matrisi genellikle 2×2’lik bir tablo şeklinde yapılandırılır. Bu tablo, modelin tahminlerini ve gerçek etiketleri karşılaştırır. Her bir hücre, belirli bir durumun ne kadar doğru veya yanlış tahmin edildiğini belirtir. Örneğin, doğru tahminler (true positives – TP) ile yanlış pozitifler (false positives – FP) yazılırken, diğer hücreler yanlış negatifler (false negatives – FN) ve doğru negatifler (true negatives – TN) için kullanılır. Bu yapı, modelin hangi alanlarda güçlü olduğunu ve hangi alanlarda geliştirilmesi gerektiğini belirler.

Doğruluk matrisinin en büyük avantajlarından biri, model değerlendirmesi için daha ayrıntılı bir görünüm sunuyor olmasıdır. Sadece doğruluk oranına bakmak, modelin performansı hakkında tam bir resim vermeyebilir. Örneğin, bir model tüm veriyi bir sınıfa tahmin ederse, yüksek bir doğruluk oranı elde edebilir; fakat bu modelin faydalı olup olmadığını anlamak için daha derin bir analiz gereklidir. İşte burada doğruluk matrisi devreye girer!

Python ile Doğruluk Matrisinin Oluşturulması

Python’da doğruluk matrisini oluşturmanın en kolay yolu, popüler scikit-learn kütüphanesini kullanmaktır. scikit-learn, makine öğrenmesi algoritmalarının yanı sıra, model değerlendirme araçları da sunan geniş çaplı bir kütüphanedir. Aşağıda adım adım bir doğruluk matrisinin nasıl oluşturulacağını göreceksiniz:

1. Gerekli Kütüphanelerin Kurulumu

İlk olarak, gerekli kütüphaneleri yüklemek gerekiyor. scikit-learn kütüphanesinin yanı sıra numpy ve pandas da kullanacağız. Aşağıdaki kodu çalıştırarak bu kütüphaneleri kurabilirsiniz:

pip install numpy pandas scikit-learn

Kütüphaneleri yükledikten sonra, içe aktarma işlemini gerçekleştirelim:

import numpy as np
import pandas as pd
from sklearn.metrics import confusion_matrix, accuracy_score

2. Veri Setinin Hazırlanması

Doğruluk matrisini oluşturmak için öncelikle bir veri setine ihtiyacımız var. Burada basit bir örnek veri seti oluşturabiliriz. Aşağıdaki kodda, 10 tahmin ve gerçek değerleri içeren bir liste bulunmaktadır:

y_true = np.array([1, 0, 1, 1, 0, 1, 0, 0, 1, 0])  # Gerçek değerler
y_pred = np.array([1, 0, 1, 0, 0, 1, 0, 1, 1, 0])  # Tahmin edilen değerler

Bu diziler, 1 ve 0 olarak iki sınıfı temsil etmektedir. Şimdi bu diziler ile bir doğruluk matrisi oluşturalım.

3. Doğruluk Matrisinin Oluşturulması

Aşağıdaki kod parçası, confusion_matrix() fonksiyonunu kullanarak doğruluk matrisini oluşturur:

cm = confusion_matrix(y_true, y_pred)
print("Doğruluk Matrisi:")
print(cm)

Yukarıdaki kod, doğruluk matrisini ekrana yazdıracaktır. Her hücrede yeterli bilgi bulunmaktadır: TP, TN, FP ve FN değerleri sırasıyla yukarıdan aşağıya ve soldan sağa doğru sıralanmaktadır. Matrisin ilk satırı, pozitif sınıfın tahminlerini, ikinci satırı ise negatif sınıfın tahminlerini temsil eder.

Doğruluk Matrisi ile Performans Değerlendirmesi

Doğruluk matrisinin oluşturulmasının ardından, modelin performansını değerlendirmek için birkaç metrik hesaplayabiliriz. Bu metrikler arasında doğruluk, hassasiyet, duyarlılık ve F1 puanı yer alır. Bu metrikler, modelin ne kadar iyi çalıştığı hakkında daha fazla bilgi verecektir.

1. Doğruluk

Doğruluk, doğru tahminlerin toplam tahminlere oranını temsil eder. Aşağıdaki kod parçası, doğruluğu hesaplamak için kullanılabilir:

accuracy = accuracy_score(y_true, y_pred)
print(f"Doğruluk: {accuracy:.2f}")

Bu metrik, Yüzde (%) olarak ifade edilen bir değer döndürecektir. Yüksek bir doğruluk, modelin genel performansının iyi olduğunu gösterir.

2. Hassasiyet ve Duyarlılık

Hassasiyet, doğru pozitif tahminlerin toplam pozitif tahminlere oranını gösterirken, duyarlılık ise doğru pozitif tahminlerin toplam gerçek pozitif durumlara oranını gösterir. Bu metrikleri hesaplamak için aşağıdaki formüller kullanılabilir:

TP = cm[1, 1]
FP = cm[0, 1]
FN = cm[1, 0]

precision = TP / (TP + FP)  # Hassasiyet
recall = TP / (TP + FN)     # Duyarlılık

print(f"Hassasiyet: {precision:.2f}")
print(f"Duyarlılık: {recall:.2f}")

Bu metrikler, modelin hangi pozitif sınıfları doğru tahmin ettiğini ve hangi yanlış tahminlerin yapıldığını daha iyi analiz etmemize olanak tanır.

3. F1 Skoru

F1 skoru, hassasiyet ve duyarlılığın harmonik ortalamasıdır ve modelin genel performansını ölçmenin etkili bir yoludur. Aşağıdaki kod kullanılarak F1 skoru hesaplanabilir:

f1_score = 2 * (precision * recall) / (precision + recall)
print(f"F1 Skoru: {f1_score:.2f}")

F1 skoru, dengeli bir ölçüm sunarak yanlış pozitifi ve yanlış negatifleri minimize edecek şekilde modelin olduğunu belli şekilde özetler.

Sonuç

Doğruluk matrisi, makine öğrenmesi modelinin performansını ölçmek için son derece etkili bir araçtır. Python’da scikit-learn kütüphanesi ile kolayca oluşturulabilir ve bazı temel metrikler ile değerlendirilerek modelin güçlü ve zayıf yönleri hakkında bilgi sahibi olunabilir. Doğruluk oranı, hassasiyet, duyarlılık ve F1 skoru gibi metrikler, modelin performansını daha iyi anlayarak geliştirilmesi gereken alanları belirlemenize yardımcı olur.

Yazıda açıklanan adımları uygulayarak kendi veri setlerinizde de doğruluk matrislerini oluşturarak incelemelerde bulunabilirsiniz. Python’un sağladığı güçlü kütüphaneler ile verilerinizi analiz etmek ve sonuçlarını görselleştirmek oldukça keyifli hale geliyor. Unutmayın, başarılı bir model geliştirmenin yanında onu değerlendirmek ve analiz etmek de en az geliştirmek kadar önemlidir!

Bu yazının sonunda, doğruluk matrisinin nasıl çalıştığını anladığınızdan ve bunu kendi projelerinizde uygulamak için ilham aldığınızdan eminim. Python ile analiz işlemlerinde başarılar dilerim!

Scroll to Top