Scikit-Learn ile Sınıflandırma
Scikit-Learn Python 'un standart Yapay Öğrenme kütüphanesidir. Kalp atışı sınıflandırma problemi için bu kütüphane ile başlayacağız. Bu kütüphane devasa bir kütüphane aklınıza gelen hemen her tür metod için sınıflar, fonksiyonlar eklenmiştir. Pek çok sınıflandırıcıda hali hazırda emrinize amade beklemedektedir
Yukardaki resim sınıflandırıcı metdolarını karşılaştırmak için yazılmış
örnek kodun çıktısıdır.
Sınıflandırıcı için alt sınırımızdan bahsetmiştik geçenki yazımızda. Bütün örneklere normal dersek %82 başarılı çıkıyordu. Önce onu deneyelim
Bu basit ve sade tahmin sistemi bizim alt çizgimiz bu yöntemle ulaştığımız sonuçlardan daha iyi sonuca ulaşamayan, sınıflandırcı metodlarını bu problem için kullanmanın anlamı yok.
Verimiz hazır, sklearn 'ün bir sürü sınıflandırıcısı da elimizin altında. Bundan sonra izleyeceğimiz metodloji şöyle
- Sınıflandırıcı Nesnesini oluştur.
- Eğitim verisi ile modeli eğit - fit fonksiyonu -
- Eğitilmiş model ile doğrulama verisinden tahmin yaptır - predict -
- Tahmin edilmiş değerlerle gerçek değerleri karşılaştır - classification_report fonksiyonu -
- Karşılaştırılımış sonuçlar yeterince iyi ise 8. maddeye git
- Karşılaştırılımış sonuçları daha iyi hale getirmesni umduğumuz parametre değişikliklerini yap
- Yeni parametrelerle 1. maddeye dön
- Eğitilmiş model ile test verisinden tahmin yaptır - predict -
- Tahmin edilmiş değerlerle gerçek değerleri karşılaştır - classification_report fonksiyonu -
bu admlardan en muğlak olan 6. olan daha iyi sonuca ulaştıracak parametre değişikliği. Bunu yapabilmek için ilk etapta Sınıflandırıcı nasıl çalışır , parametreler ne anlama gelir, bilgi sahibi olmamız lazım. Bunlara ek olarak hangi tür verilerde hangi tip değişiklikler olumlu etkiliyor gibi tecrübe de gerekiyor. İlki İçin okuyup araştıracaksınız. İkincisi için tecrübe edeceksiniz.
Başlayalım denemelere 3 tip sınıflandırıcı deneyeceğiz.
KNN - K-En Yakın Komşuluk
Genellikle KNN olan kısaltılmış adıyla bilinir. KNN genel anlamda hem sınıflandırma hem de regresyon için kullanılabilir. Sklearn de sınıflandırıcı olarak kullanmak için "
KNeighborsClassifier" kullanılır. Metodda veriler vektörel olarak ifade edilir. Tahmin işlemi için verilen vektör K adet en yakın komşusunun durumuna göre cevaplanır. Eğer Sınıflandırma problemi ise, K adet komşunun sınıflarının oy çokluğudur. Eğer regresyon ise En Yakın K adet komşusunun değerlerinin ortalamasıdır.
Mesela aşağıdaki grafikte rengi belli olmayan noktanın sınıfı, kendisine en yakın K = 3 komşusunun
rengine göre seçilir.
2 komşusu kırmızı, bir komşusu mavi, sonuç kırmızıdır.
SVM – Destekleyici Vektör Makinesi
Support Vector Machines; Destekçi Vektör Makinesi diye tercüme edilse de Türkçe kaynakların pek çoğunda kısaltma ismiyle SVM olarak geçer. Çekirdek -kernel- fonksiyonu ile veriler hiper uzaya aktarılır, guruplar arası hiper düzlemler hesaplanır. Bu düzleme en yakın veriler - ki destek vektörleri denir - kullanılarak, düzlem guruplar arası en optimum konuma yerleştirilir.
Sınıflandırma aşamasında da veri hiper uzaya aktarılır ve eğitim verisiyle oluşturulmuş hiper düzleme olan konumuna göre değerlendirilir.
Grafikle kafanızda canlandırmaya çalışalım. Kırmızı ve mavi iki ayrı sınıfa ait veriler ve uzayda şekildeki gibi görünsün. Bu iki gurubu ayrıştıran bir doğru bulalım. Fakat şöyle bir durum var; bu iki gurubu ayrıştıran sonsuz sayıda doğru bulunabilir. Bir kaç tanesini kesik çizgili olarak çizdik. SVM eğitimi ile doğrumuzu guruplar arası en optimum yere taşıyoruz. Grafikteki yeşil çizgi gibi. Doğru bir kez tespit edildikten sonra kullanımı kolaydır. Bulduğumuz doğrunun solunda kalanlar mavi, sağında kalanlar kırmızıdır.
Sklearn de sınıflandırıcı olarak kullanmak için "
SVC" kullanılır.
Yapay Sinir Ağı
Klasik çok katmanlı Yapay Sinir Ağı. Sklearn de "Multi-layer Perceptron" diye geçiyor. Hem regresyon hem sınıflandırma için kullanılabiliyor. Sınıflandırma problemi için "
MLPClassifier" kullanılıyor. Metodun çalışma sistemi için açıklama yazmayacağım, Çünkü eski yazılarımızda çok fazla işlediğimiz bir konu. Biraz zahmet olacak ama kusura bakmayın...
Sonuçlar
KNN
precision recall f1-score support
N 0.979 0.995 0.987 18118
S 0.882 0.671 0.762 556
V 0.946 0.906 0.926 1448
F 0.791 0.679 0.731 162
Q 0.994 0.954 0.973 1608
avg / total 0.974 0.975 0.974 21892
SVM
precision recall f1-score support
N 0.961 1.000 0.980 18118
S 0.984 0.570 0.722 556
V 0.987 0.772 0.866 1448
F 0.854 0.648 0.737 162
Q 0.999 0.917 0.957 1608
avg / total 0.966 0.965 0.962 21892
YSA
precision recall f1-score support
N 0.980 0.995 0.987 18118
S 0.886 0.631 0.737 556
V 0.966 0.901 0.932 1448
F 0.815 0.654 0.726 162
Q 0.979 0.979 0.979 1608
avg / total 0.975 0.976 0.975 21892
Sklearn ile yaptığımız denemelerin sonuçları böyle bundan sonraki aynı konulu yazılarımızda, Başka kütüphaneler ve metodlarla denemeler yapmaya çalışacağız. Her türlü görüş ve önerilerinizi bekleriz.