"Enter"a basıp içeriğe geçin

Python ile Sınıflandırma Modelleri için Performans Değerlendirme

Önceki iki yazımızda Sınıflandırma (Classification) modellerine ilişkin performans değerlendirme metriklerinin neler olduğunu ve nasıl hesaplandığını öğrendik.

Bu yazımızda ise Jupyter Notebook üzerinde yapacağımız python uygulamaları ile bu bilgilerimizi pratiğe çevireceğiz.

Pratik uygulamamız için sklearn kütüphanesinin sağladığı iris veri setini kullanacağız.

from sklearn.datasets import load_iris

dataset = load_iris()

load_iris diğer sklearn veri setleri gibi bize Python dilinde sıkça kullanılan dictionary yapısına benzer bunch nesnesi döndürür.

dataset olarak adlandırdığımız bunch nesnesine ait .DESCR stringi veri setini tanımamıza yardımcı olacaktır:

print(dataset.DESCR)

Kısaca özetlemek gerekirse Zambak çiçeğine ait 150 farklı örneğin 4 farklı özelliğine ait veriler ile bunlara karşılık gelen 3 farklı türünü içeren bir veri seti ile çalışacağız.

Veri setine ilişkin keşifsel veri analizi yapmak da pratik kazanmak ve veriyi anlamak açısından faydalı olacaktır.

Veri setine ilişkin özellik seti ile etiketleri için nesneleri tanımlayarak devam edelim:

features = dataset.data
labels = dataset.target

Veri setini elde ettiğimize göre, sırada eğitim (train) ve test setlerine ayrıştırmayı gerçekleştirebiliriz:

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size = 0.20, shuffle = True)

X_train ve y_train eğitim (training) için, X_test ve y_test ise test için kullanılacak.

Karar Ağacı modelini seçerek eğitmek için aşağıdaki kod parçasını çalıştırıyoruz:

from sklearn.tree import DecisionTreeClassifier

classifier = DecisionTreeClassifier()
classifier.fit(X_train,y_train)

Modelimizi eğittiğimize göre, test için ayırdığımız X_test içerisindeki tüm örnekler için tahmin yaptırabiliriz:

y_pred = classifier.predict(X_test)

Tahminleme adımı da tamamlandığına göre, eğitilmiş sınıflandırma modelinin performans ölçümleri hesaplanabilir. Sınıflandırma Modelleri İçin Performans Değerlendirme adlı yazıda öğrendiğimiz doğruluk (accuracy), duyarlılık (recall), kesinlik (precision), F-skor (F-score) ve Matthews Correlation Coefficient (MCC) değerlerini hesaplamak ile başlayabiliriz.

Doğruluk (accuracy) hesaplaması için aşağıdaki basit kodu kullanabiliriz:

from sklearn.metrics import accuracy_score

accuracy = accuracy_score(y_test, y_pred)
print(accuracy)

Duyarlılık (recall), kesinlik (precision), F-skor (F-score) ve Matthews Correlation Coefficient (MCC) değerlerine geçmeden önce hata matrisi (confusion matrix) ile başlayalım:

from sklearn.metrics import confusion_matrix

conf_mat = confusion_matrix(y_test, y_pred)
print(conf_mat)

Kod parçası çıktı olarak 3×3 boyutta bir matris döndüyor. Önceki yazılarda anlaşılabilirlik için binary yani yalnızca iki sınıf olan bir örnek kullanmıştık. Burada ise 3 farklı sınıfa sahip olunduğundan 3×3 boyutunda hata matrisi elde ediyoruz.

Eğer herhangi bir değişiklik yapılmadı ise aşağıdakine yakın sonuçları görüyor olmalısınız:

SetosaVersicolourVirginica
Setosa1200
Versicolour0170
Virginica0115

Basit bir tablo okuması ile tüm Setosa ve Versicolour türündeki örneklerin doğru tahminlendiğini buna karşın bir adet Virginica türündeki örneğin ise Versicolor olarak tahminlendiğini anlayabiliriz. Böylece çok sınıflı (multiclass) sınıflandırma modellerine ait hata matrisinin (confusion matrix) ne şekilde doldurulduğunu da kavramış olduk.

Eğer her bir sınıf için diğerleri ile karşılaştırma yapmak üzere hata matrisi oluşturmak istenir ise aşağıdaki kod parçası kullanılabilir:

from sklearn.metrics import multilabel_confusion_matrix

mul_conf_mat = multilabel_confusion_matrix(y_test, y_pred)
print(mul_conf_mat)

Duyarlılık (recall), kesinlik (precision), F-skor (F-score) değerlerini hesaplamak üzere aşağıdaki kod parçası kullanılabilir:

from sklearn.metrics import classification_report

print(classification_report(y_test, y_pred))

Matthews Correlation Coefficient ise şu şekilde hesaplatılabilinir:

from sklearn.metrics import matthews_corrcoef

mcc = matthews_corrcoef(y_test, y_pred)
print(mcc)

Uygulamanın github repo’suna erişmek için tıklayın.

Iris veri seti için bir çok farklı sınıflandırma metriğini sklearn ile gerçekledik. Bir sonraki yazıda ROC eğrisini çizdirecek, AuC değerini hesaplayacağız.

Keyifli öğrenmeler 🙂

İlk Yorumu Siz Yapın

Bir Cevap Yazın

Translate »
%d blogcu bunu beğendi: