Cuma, Temmuz 08, 2016

Python İle Yapay Zeka 3

Regresyon :

Problemimizin sınıflandırıcı ile çözümünü yapmıştık şimdide regresyon metodlarından biri ile aynı problemi çözelim.

Biz problemimizde LassoLarsCV metodunu kullanacağız. Liner bir metodun Lars algoritmasıyla ve cross validation ile sağlaması yapılmış bir regresyon modeli çıkarır. Lars ağgoritması için verdiğimiz linke bakın. Cross-validation kavramından bahsedelim biraz.

'Cross Validation' diye de geçen bir terim bu. Türkçeye çapraz doğrulama diye geçmiş. Bir önceki örnekde de görmüştük. Eğitimini yaptığımız sistemin eğitim için kullanmadığımız verilerle doğrulmasının yapılması gerekiyor.  Kabaca anlatırsak ; çapraz doğrulama ile eğitim verisi  istenen sayıda parçaya ayrılır.

Bir parçasının ayrılıp diğerleri ile model eğitilir.  Ayrılan parçası ile doğrulaması yapılarak o modelin performansı ölçülmüş olur.  Sonuçda elede edilen eğitilmiş modellerin  performanslarının ortalaması kullanılır.

Uygulamamıza dönersek. Verimiz zaten hazırdı. Aynı kısımdan devam edersek önce kullanacağımız sistem için gereken çağrıları yapalım



 İlk satırda LassoLarsCv  sınıfını kullanmak için gerkeken çağrıdır. İkinci satırda ise bu tip modellerde performansı artıran bir ön işleme metodudur. 


Scale- Ölçekleme  fonksiyonu ile her değerden ortalama çıkarılıp standart sapmaya bölünerek uygulanıyor.  İlk satırda Ölçekleme için gereken sınıf oluşturuluyor. İkinci satırda Ölçekleme için gerken parametreler fit fonksiyonu ile ve eğitim verisi kullanılarak  elde ediliyor.  Sonraki satırlarda Sonrasında transform fonksiyonu ile gereken ölçekleme işlemleri eğitim ve test verisi için uygulanıyor.

ilk satırda LassoLarsCV sınıfı tanımlanıyor 10 parçalı bir çapraz doğrulama yapılması için parametre olarak 'cv=10' veriliyor.
ikinci satırda diğer sklearn modellerindeki gibi fit fonksiyonu ve eğitim verileri ile eğitim işlemi yapılıyor

bu model yine aynı diğer çoğu sklearn modelinindeki gibi predict fonksiyonu ile eğitilmiş modelimizin test verisi için tahminlerini alıyoruz.

Fakat bu modelimizde sınıflandırmanın aksine tahminler sadece 0 ve 1 arası bir değer olarak hesaplanır.


Modelimizin performansını ölçmek için  bu sayıların bir eşik eğerin altında olanlarını 0  üstünde olanlarını 1 olarak  filitreliyoruz. Eşik değeri olarak orta noktayı seçiyoruz 0.5

Artık tahminlerimizi tıpkı sınıflandırmadaki gibi değerlendirebiliriz.


İlk  satırda karşılaştırma matrisini -confusion matrix-  hesaplıyoruz.  Bu yazımızda konuyu biraz daha açalım bu matrisde sutunlar tahminleri satırlar gerçek değerleri gösteriyor
yani ilk satırda 1638 + 55 = 1693 gerçekde 0 olması gereken gözlem var.  Bunun 1638 i  0 diye doğru tahmin edilmiş 55 tanesine 1 denilmiş Aynı şekilde ikinci satırda yani 1 değeri için 3+969 = 972 gözlem vardır bunlardan 969 tanesi 1 diye doğru tahmin edilmiş 3 tanesi 0 diye yanlış yahmin edilmiş.

Sınıflandırma örneğimizde giriş özelliklerinin önem derecesini görmüştük.  Şimdi kullandığımız metod da aşağı yukarı aynı amaç için coef_ özelliğini kullanıyoruz.



Regresyon modelimiz de de en önemli giriş özellikleri sırası ile Aydınlık değri Light  ve  Karbondioksit değeri CO2. Sınıflanırdmadaki modelimizin aksine bu iki özellik dışındakilerin bir önemi görünmüyor.

Eşik değerini  orta nokta olarak seçtik farklı eşik değerleri için tahminlerimizin doğruluk oranı değişirmi ?




Hesaplayalım  Yukardaki kodda hem eğitim verisi hemde tes verisi için tahminler yapılıp değişik eşik değerleri için doğruluk oranları hesaplanıyor. eğitim ve test verisi doğruluk oranını  ortalamalırnın maksimum olduğu eşik değeri hesaplanıyor.


Hesaplanmı eşik değerlerini grafik olarak gösteriyoruz ve altında bulduğumum optimum eşik değeri için hesaplanan eşik değerlerini yazıyoruz.

Koda ulaşmak için buraya bakabilirsiniz 

Evet Bir yazımızın daha sonuna geldik. Eğer Uygun zaman ve uygun bir veri seti bulabilirsem bu yazı serisinin bir sonrakinda Danışmansız - Unsupervised - metdola ilgili bir uygulama yapmak ve anlatmak istiyorum. Her türlüğörüş öneri ve sorularınızı bekleriz.

Hiç yorum yok: