Arama Paneli

Merhaba arkadaşlar geçen makalemde WEKA programının kısa bir tanıtımını yapmıştım.Şimdi ise en baştan bir proje geliştirerek, yani Excel'de kod yazarak dosyalarımızı kendimiz oluşturacağız ve o dosyalar üzerinde işlemler yapacağız.Sonra da Weka Programı ile üzerinde işlemler yaptığımız dosyayı inceleyeceğiz, raporlayacağız, grafiksel arayüzünü kullanarak yorumlama yapacağız.

Benim elimde daha önceden oluşturduğum bir excel dökümanı var.İçerisinde hastanede yatan hastaların kayıtları tutuluyor.Hasta adı, giriş-çıkış, yaşı vb. gibi bilgiler yer almaktadır.Siz istediğiniz excel dosyasını(elinizde varsa kayıtlı bilgiler vs..) aşağıda vereceğim komutlarla çalıştırabilirsiniz arkadaşlar.

Boş bir excel sayfası açıyoruz öncelikle ve ALT + F11 diyerek komut ekranımıza gidiyoruz.Ben aşağıda görüldüğü gibi butonlarımı oluşturdum, sizler de yaptığım gibi yapın arkadaşlar.

 

 

İlk önce bir dosya oluşturmamız lâzım.Dosya Yap butonuna çift tıklayarak kodlarımızı yazıyoruz;

 

Set fs = CreateObject("Scripting.FileSystemObject")
Set dosya = fs.CreateTextFile("C:\Kodkolik\Hastane.arff", 2)
dosya.Close
MsgBox "Dosya Oluşturuldu"

 

Dosya oluşturma komutumuz CreateObject'dir.Create komutunda 2 rakamı kullanılır.Ben C sürücüsüne oluşturdum, siz istediğiniz yere oluşturabilirsiniz.

Daha sonra ben değişken tanımlayacağım ve bu değişkenleri C sürücüsüne aktaracağım.Değişken tanımlamak için "@attribute" komutu kulanılır.Örneğin; @attribute Kilo {Şişman,Zayıf} gibi örnek verebiliriz.Şimdi değişken tanımlayıp bu değişkenleri bir önce ki dosyamıza(Hastane.arff) aktaralım;

 

Set fs = CreateObject("Scripting.FileSystemObject")
Set dosya = fs.OpenTextFile("C:\Kodkolik\Hastane.arff", 8)
dosya.writeline "@Relation Hastaverisi"
dosya.writeline "@attribute Cinsiyet {KADIN,ERKEK}"
dosya.writeline "@attribute Giris {OO,OS}"
dosya.writeline "@attribute Cikis {OO,OS}"
dosya.writeline "@attribute Yas {Genc,Orta,Yasli}"
dosya.writeline "@attribute Gun {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29}"
dosya.writeline "@attribute Class {iyilesti,iyilesmedi} "
dosya.writeline "@DATA"
dosya.Close
MsgBox "Değişkenler Tanımlandı"

 

CreateObject ile dosya sınıfı oluşturuyoruz ve dikkat ederseniz arkadaşlar 2 yerine 8 yazdım, çünkü 8 sayısı daha önceden oluşturulmuş dosyanın verilerinin hepsini silerek baştan yazmamıza olanak sağlar.Yani önce ki kayıtları siler, yeni kayıtları ekler."@attribute Class" --> Her şey buna göre yani sınıfa göre yazıldığı için Class yazıldı. Class sınıfını baz alıyoruz.

Değişkenleri de tanımladıktan sonra sıra verilerimizi aktarmaya geldi.Excel dosyasında 28827 satır ve 6 sütun bulunmakta.Ona göre bir döngü kurup verileri düzgün bir şekilde aktarmamız lâzım.Kodlarımızı yazalım;

 

Set fs = CreateObject("Scripting.FileSystemObject")
Set dosya = fs.OpenTextFile("C:\Kodkolik\Hastane.arff", 8)
For i = 2 To 28827
For k = 1 To 5
dosya.write Cells(i, k)
dosya.write ","
Next k
dosya.writeline Cells(i, 6)
Next i
MsgBox "Veriler Aktarıldı"

 

Excel dosyamızda ki ilk bilgilere bakarsak yaş sütununda rakamlar var, ben bunu böyle değil de yaşı şundan büyük ise orta yaşlı, küçük ise genç şeklinde göstermek(güncellemek) istiyorum.Kodlaması şu şekildedir;

 

For i = 2 To 28827
If Cells(i, 1) <= 30 Then
Cells(i, 9) = "Genc"
ElseIf Cells(i, 1) > 30 And Cells(i, 1) <= 65 Then
Cells(i, 9) = "Orta"
Else
Cells(i, 9) = "Yasli"
End If
Next
MsgBox "Hasta Yaşları Başarıyla Güncellenmiştir"

 

Bildiğimiz döngü işlemleriyle bu işi yaptık arkadaşlar. Sonra ki sorunumuz ise Excel'de 4.sütunda "Şifa İle Taburcu" yazısı mevcuttur.Ben bunu İyileşti-İyileşmedi şeklinde yapmak istersem kodlama aşağıda ki gibi olur;

 

For i = 2 To 28827
If Cells(i, 4) = "Şifa İle Taburcu" Then
Cells(i, 10) = "iyilesti"
Else
Cells(i, 10) = "iyilesmedi"
End If
Next
MsgBox "Sınıflar Tamam"

 

Ben daha önceden bazı sütunları sildiğim için Cells(i,10) kodunu yazdım,daha önce 20'den fazla sütun vardı,bu kod ona göre yazılmış bir koddur.Yoksa mantık hepsinde aynıdır arkadaşlar, hangi sütunu güncellemek istiyorsanız o sütunun numarasını bilmemiz yeterlidir. Başka bir sütunu güncelleyecek olursam; mesalâ hastaların giriş-çıkış saatlerini güncelleyelim.Saat 12'den önce ise OO(Öğleden Önce), 12'den sonra ise OS(Öğleden Sonra) yazdıralım.Kodlamaya geçelim;

 

For i = 2 To 28827
zaman = Mid(Cells(i, 2), 12, 3)
If Left(zaman, 2) <= 12 Then
Cells(i, 7) = "OO"
Else
Cells(i, 7) = "OS"
End If
Next
MsgBox "Giriş Saati Tamam"

 

Normalde 3 yerine 2 tane almamız gerekiyordu. Fakat boşluğu almayınca hata verdi o yüzden 3 tane(3 karakter) aldık. Left(soldan kontrol et), boşluğu kesip sadece saati aldık. Çıkış komutunu biliyorsunuz zaten :)

Evet arkadaşlar bu işlemlerimizi yaptıktan sonra Excel ile işimiz bitiyor ve tablomuzu daha net,daha anlaşılır şekilde görmek için WEKA Programı'na geçiş yapıyoruz.Burada tablomuzu grafiksel olarak görüntüleyip, daha sonra da bazı algoritmaları kullanarak tablomuz(veriler) hakkında daha detaylı bilgilere ulaşabileceğiz arkadaşlar.Başlayalım;

Weka Programı'nı açıp Explorer butonuna tıklıyoruz.Sonra da az önce yazptığımız dosyayı(Kodkolik klasörünün içinde ki Hastane.arff dosyası) açıyoruz arkadaşlar.İzlenecek yol : Explorer ---> Open File

Ve karşımıza aşağıdaki gibi bir ekran geliyor.

 

 

Evet arkadaşlar gördüğünüz gibi Attributes(Özellik/Nesne Sayısı) : 6 , Instances(Kayıt Sayısı) : 28826 gelmiş durumda.Sağ alt taraflarda da bu verilerin grafiksel olarak yorumu mevcuttur.Örnek verecek olursak arkadaşlar Cinsiyet sütunundan;

Cinsiyeti KADIN olanların sayısı : 15421

Cinsiyeti ERKEK olanların sayısı : 13405

Bu ekranda yukarıda ki Edit butonundan değişiklikler ve görüntülemeler yapılabilir.Yine sağ alt kısımlara gelindiğinde ise Visualite All(Tümünü Görüntüle) butonu mevcuttur.Bu buton ise karşımıza bütün tabloları(verileri) grafiksel olarak tek bir ekranda görmemize olanak sağlar.

 

 

Bu kısmı geçtikten sonra ise Clasify(Sınıflandırma) butonuna tıklayarak, veriler üzerinde bazı algoritmaları kullanarak sınıflandırma yapacağız arkadaşlar.

İzlenecek Yol : Clasify ---> Choose(Seç) ---> Bayes ---> BayesNet ---> Start

Karşımıza tree(ağaç) şeklinde algoritmalar çıkacaktır.Her biri farklı sınıflardır, yorumlayıcılardır.Ben üstteki gibi BayesNet'i seçtim.Sonuç olarak karşımıza aşağıdaki gibi bir ekran çıkacaktır;

 

 

Ekranı incelersek; aşağıdaki bilgileri elde etmiş oluruz arkadaşlar.

Relation:       Hastaverisi
Instances:    28826
Attributes:    6
                    Cinsiyet
                    Giris
                    Cikis
                    Yas
                    Gun
                    Class

Ekranda biraz daha aşağılara gelince, bizim için asıl önemi olan bilgilere gelmiş oluyoruz arkadaşlar.Bilgiler;

=== Stratified cross-validation ===
=== Summary ===

Correctly Classified Instances        19316               67.009  %
Incorrectly Classified Instances      9510                 32.991  %
Kappa statistic                                0.3433
Mean absolute error                       0.4112
Root mean squared error               0.4612
Relative absolute error                   82.5571 %
Root relative squared error            92.4122 %
Total Number of Instances             28826 


=== Detailed Accuracy By Class ===

                            TP Rate   FP Rate   Precision    Recall     F-Measure   ROC Area  Class
                             0.722     0.375        0.629          0.722     0.672            0.72           iyilesti
                             0.625     0.278        0.718          0.625     0.668            0.72           iyilesmedi
Weighted Avg.      0.67       0.324        0.676          0.67       0.67              0.72 

=== Confusion Matrix ===

    a    b   <-- classified as
 9754 3762 |    a = iyilesti
 5748 9562 |    b = iyilesmedi

Mesalâ bilimsel bir çalışma yürütüyorsunuz diyelim,bu bilgiler çok ama çok işinize yarar.Birkaç tane daha algıritma sınıflandırmasından sonra bu bilgileri bir tablo haline nasıl getirilir ve tablo nasıl hazırlanız onu inceleyeceğiz arkadaşlar.

Şimdi ise başka bir algoritma sınıfından olan  Tree(Ağaç) sınıfına bakalım.Siz dilediğiniz sınıflandırmayı yapabilirsiniz.Ben sadece göstermek amaçlı yapıyorum.

İzlenecek Yol : Clasify ---> Choose(Seç) ---> Tree ---> AdTree ---> Start 

Karşımıza aşağıdaki gibi bir ekran gelecektir;

 

 

Burada ki bilgileri yorumlayacak olursak meselâ;

Yas = Genc : -0.48  ---> Yorumu : Yaşı genç olanların oranı

Yas != Genc : 0.09  ---> Yorumu : Yaşı genç olmayanların oranı

şeklinde yorumlanabilir.

Şimdi bu verileri gelin beraber tabloya aktaralım arkadaşlar;

 

 

Tablomuzu bu şekilde dolduruyoruz arkadaşlar.Peki bu rakamları neye göre ekledik,nerden ekledik birazda ona değinelim;

Correctly Classified Instances            ----->    Doğru Sınıflandırılan Örnek Sayısı

Kappa statistic                                    ----->    Kappa İstatistiği

Mean absolute error                           ----->    Ortalama Mutlak Hata

Root mean squared error                   ----->    Ortalama Hata Karekökü

Relative absolute error                       ----->    Göreli Mutlak Hata(%)

Root relative squared error                ----->    Göreli Hata Karekökü(%)

Weighted Avg.(TP Rate)                    ----->    TP Oranı

Weighted Avg.(FP Rate)                    ----->    FP Oranı

Weighted Avg.(F-Measure)               ----->     F Ölçütü

 

Makaleyi bitirmeden önce kümeleme konusuna değinmek istiyorum arkadaşlar.Kümeleme ve Sınıflandırma arasındaki farkları şöyle sınıflandırabiliriz : 

Sınıflandırma -----> 1.Sınıflar önceden bellidir.

                               2.Denetimlidir.

Kümeleme    -----> 1.Sınıflar önceden belli değildir.

                               2.Denetimli değildir.

Kümeleme için bir örnek yapacak olursak arkadaşlar;

İzlenecek Yol : Cluster ---> Choose(Seç) ---> EM ---> Start 

diyerek yine farklı bir yorumlayıcıları çalıştırmış oluruz.Ve bunun üzerinden yorumlamaya devam edebiliriz.

Bu excel dosyasını buradan indirerek çalışmaya devam edebilirsiniz arkadaşlar(RAR Şifresi : www.kodkolik.net).

Evet arkadaşlar bu makalenin de sonuna geldik.Herhangi bir anlaşmazlık olursa eğer bana yorum atarak, iletişim kısmından veya sosyal medya aracılığıyla ulaşabilirsiniz.Sonraki makalemde görüşmek dileği ile sağlıcakla kalınız...

Bu Dersin Videosunu Aşağıdan İzleyebilirsiniz

Yorum Paneli
Adınız (*)
 
Mail Adresiniz (*)
 
Mesajınız (*)
Güvenlik Kontrolü :