Eğitim için datamızı hazırlamıştık aynı işlemleri test verisi içinde uygulamamız gerekiyor. Bizim şimdi kullandığımız veri setinde test verileri için ayrı bir dosya hazırlanmış öyle bir dosya olmasa bile bizim verinin bir kısmını test için ayıırmamız gerekmektedir. Çünkü eğitim sonunda sistemi eğitimde kullanılmayan verilerle doğrulamak gerekli bir adımdır.
Eğtim verilerini hazırlamak için uyguladığımız adaımlarla aynı. sadece Giriş veri sutun adlarını grafiklerde kullanmak için kaybolmadan inLabels dizisine atıyoruz.
Eğitim :
Şimdi elimizde sensörlerden gelen verilerimiz var ve sensör verilerine karşılık odanın boş olduğu yada içinde birilerinin olduğu bilgisi var. Böyle bir sisteme danışmanlı -Supervised - sistem deniyor.Kullanacağımız kütüphanenin pek çok değişik modeli var. Eğitim hakkında dikkat edilmesi gereken pek çok konu var. YSA üzerine yazdığımız şu yazıdaki
ysa-buyu-degildir.htmlbilgilerden çoğu bütün danışmanlı eğitim sistemlerinde geçerlidir okumanızı öneriririm.
Probelmimizi iki şekilde ele alabiliriz, Sınıflandırma ve Regresyon. Sınıflandırmada çıkış değeri odanın boş yada dolu olması üzerine bir sınıflandırma. Regresyonda ise 0 ila 1 arası bir çıkış değerine ulaşmak şeklinde bir her ikisi içinde deneme yapacağız.
Sınıflandırma :
Önce gereken kütüphane çağrılarını yapıyoruz.Biz sınıflandırma için kullandığımızda RandomForestClassifier tercih ettiğimizden onu dahil ettik. Scikit-Learn kütüphanesinin içinde elbette pek çok değişik sınıflandırıcı mevcuttur. Sizde onları dahil edip denemeler yapabilrsiniz. Kütüphanenin bir güzelliği çoğu modele aynı kullanım arabirimi oluşturmuş olmasıdır. İkinci satırda ise eğitim sonrası tes aşamasında modelimiz başarısını ölçmek için kullanacağımız fonksiyonları çağırmamız için gereken modüldür.
RandomForestClassiffier karara ağaçları türü bir sınıflandırıcıdır. Her sınıflandırcının kendisine göre ayar parametreleri vardır. Daha iyi sonuçlar için bu parametreleri ayarlamak gerekebilir. İlk aşamada varsayılan değerlerle deneme yapıp sonuçları değerlendirerek ve Probleminizi, verilerinizi dikkate alarak denemeler yapmanız gerekecektir.
Yukarda gördüğünüz gibi biz ilk satırda RandomForestClassiffier sınıflandırıcı tanımladık sadece iki parametre ayarı yaptık. İkinci satır ise sklearn modelleri için genel bir yapıdır. fit fonksiyonuyla sınıflandırıcıya giriş ve çıkış verileri verilip kendini eğitim işlemi başlatıldı. Eğitimm işlemi verinize ve parametrelerinize kullandığınız sınıflandırıcıya göre değişik zaman alabilir. Bizim verimiz büyük olmadığından eğitim işlemi çok kısa sürer.
İlk satırda predict fonksiyonu ile eğitilmiş modelimize test giriş verileri verilip bu verileri için çıkış değerleri tahmin ediliyor -predictions- . predict fonksiyonuda sklearn modelleri için genel bir yapıdır.
ikinci satırda eğitilmiş model başarı ölçüm fonksiyonlarından birini görüyorsunuz. confusion_matrix fonksiyonu bizden gerçek sonuçlar ve modelin tahminlerini ister ve karşılaştırır. Ve bize matris formunda bir çıktı verir. Şimdi bizim örneğimizde odanın boş olması ve dolu olması durumu var. Modelimizde yine 2 şekilde tahmin yürütebilir. Bu taminler gerçekler sonuçlarla karşılaştırıldığında
- Boş Oda -- Boş
- Boş Oda -- Dolu
- Dolu Oda -- Boş
- Dolu Oda -- Dolu
detaylı bilgi için bakınız
Confusion_matrixBu bize modelimizin tahmin geçerliliğini gösterir. Model başarı ölçüm sistemlerinden biriside tahminlerin doğruluk oranıdır. accuracy diye geçer
Doğruluk oranı içinde accuracy_score fonksiyonunu çağırıyoruz. Elbette bu hesabın yapılması için gerçek değerlerin ve tahminlerin verilmesi gerekiyor. Sonuçda eğittiğimiz model %97.7 bir tahmin doğruluk başarısına sahip.
RandomForestClassiffier modelininin Karar Ağacı yapısında bir sınıflandırıcı olduğunu söylemiştik Ağaç temelli modellerin Giriş değişkenlerinin önem sıralamasınıda veren bir özelliği vardır.
Eğitilmiş model eğitim sonrasında feature_importances_ değişkeninde giriş değişkenlerinin önemlerini tutan bir dizi oluşturur. Peki bu liste ne anlama gelir. Grafiğe dönüştürelim ve görelim.
Kodda ise Matplotlib kütüphanesi ile sutun garfiği oluşturuldu. Grafikler sonucları çok daha iyi görmemizi sağlar
Odanın boşmu dolumu olduğunu tahmin etmemizde en çok önemi olan giriş değişkenleri ; grafikden de kolayca görebileceğimiz gibi Öncelikle aydınlık -Light- sonra Karbondioksit -CO2 - miktarı geliyor.
Problemimizin sınıflandırmayla çözümünün de sonuna geldik bir sonraki yazımızda Regresyonla bir bir çözüm daha üreteceğiz.
Görüş ve önerilerinizi bekleriz.
Hayırlı bayramlar
4 yorum:
Merhaba ben RandomForestClassifier yerine Gaussian Naive Bayes kullandım.Fakat feature_importances_ özellliğini kullanamadım.
http://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.GaussianNB.html#examples-using-sklearn-naive-bayes-gaussiannb
API de ilgili bir şey göremedim.Nasıl yapacağım konusunda bilginiz var mı acaba?
sorunuzun cevabı yazıda geçiyor "RandomForestClassiffier modelininin Karar Ağacı yapısında bir sınıflandırıcı olduğunu söylemiştik Ağaç temelli modellerin Giriş değişkenlerinin önem sıralamasınıda veren bir özelliği vardır."
Yorum Gönder