naive bayes sınıflandırma uygulaması
DESCRIPTION
Veri Madenciliği yüksek lisans dersi için hazırlamış olduğum projenin sunumudur.TRANSCRIPT
![Page 1: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/1.jpg)
Naive Bayes Sınıflandırma Uygulaması
H a r u n ÇETİN
10280161Fen Bilimleri Enstitüsü
![Page 2: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/2.jpg)
GİRİŞ VE VERİ ÖN İŞLEME
Naive Bayes Sınıflandırma Uygulaması
![Page 3: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/3.jpg)
Veri seti olarak http://kdd.ics.uci.edu/summary.task.type.html (Summary of Task Files by Type) Sayfasındaki «Forest Cover Type» veri seti kullanıldı.Yine aynı sitenin veri setiyle ilgili sayfasında belirtildiği üzere sınıflama çalışması orman örtü türünü belirleme üzerine yapıldı.Veri setinde 55 nitelik ve 581012 örnek bulunmakta.Hesaplama kolaylığı açısından nitelik sayısı veri setinin alındığı internet sayfasındaki talimatlara uygun olarak azaltıldı.
Naive Bayes Sınıflandırma Uygulaması
![Page 4: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/4.jpg)
11-15 (Wilderness area) ve 15-55 (Soil type) aralıklarındaki nitelikler internet sayfasında verilen açıklamalara uygun olarak iki ayrı nitelik olarak birleştirildi.
Böylece yeni veri setinin nitelik sayısı 13 oldu.
Örnek sayısı da azaltılarak 100000 örneklik yeni bir veri seti oluşturuldu.
Naive Bayes Sınıflandırma Uygulaması
![Page 5: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/5.jpg)
GELİŞTİRME ORTAMI VE UYGULAMA
Naive Bayes Sınıflandırma Uygulaması
![Page 6: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/6.jpg)
Geliştirme dili olarak Java tercih edildi. Geliştirme ortamı olarak ise NetBeans İDE tercih edildi. Javanıntercih edilmesinin sebebi geliştiriciye sağladığı kolaylıklar (Nesne yönelimli vb.) ve çoklu platform desteği ayrıca NetBeans ve Javanın açık kaynak lisanslı olmasıdır.
Burada sınıflamayı yapan temel sınıflara ve metotlara yer verilecektir.
Naive Bayes Sınıflandırma Uygulaması
![Page 7: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/7.jpg)
“Siniflayici” Soyut Sınıfı
Geliştirilen uygulamanın en önemli iki sınıfından ilki olan Sınıflayıcı soyut sınıfı, sınıflama işlemini yapacak olan diğer sınıflar için genel bir arayüz sağlamaktadır.
Bu sınıf içerisindeki ilk metot olan int ArgMax(Vector<Object> girdi) metodu Object türünde veri vektörü almakta ve bu vektör içindeki değerlerin sayı olarak en büyüğünün indeks numarasını int türünde döndürmektedir.
Naive Bayes Sınıflandırma Uygulaması
![Page 8: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/8.jpg)
Diğer bir metot KosulluSec(DefaultTableModel ornekler, int col, Object kosul) metodudur. Bu metot ise kendisine üç parametre almakta ve Object türünde bir Vectordöndürmektedir. Bu metot kendi içerisinde bütün eğitim örneklerini dolaşacak şekilde döngü kurmakta ve kendisine gelen kosul parametresini alarak kategori kolonunda bu kosuldeğerine karşılık gelen satırdaki int türündeki colparametresiyle verilmiş kolondaki veriyi alarak Object türünde veri alan bir vektöre eklemektedir. Dönen değer ise bu eklemeler sonucu oluşan nihai vektördür.
Naive Bayes Sınıflandırma Uygulaması
![Page 9: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/9.jpg)
Sonraki sınıf ise soyut prototipi verilmiş olan ModeliEğit(DefaultTableModel egitimSeti) metodudur. Diğer metot Sinifla(Object[] veri) ise Object türünde bir veri dizisi alarak geriye Stringtüründe sınıflama sonucunu döndürür.
Test() metodu ise herhangi bir parametre almadan Sınıfla() metodunu kullanarak test verileri üzerinden uygulamanın başarım testini gerçekleştirir ve sonucu yüzde cinsinden double olarak döndürür.
Naive Bayes Sınıflandırma Uygulaması
![Page 10: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/10.jpg)
“NaiveBayes” Sınıfı
NaiveBayes(Object[] kategoriler, int sinifKolonu, DefaultTableModel dagilimlar):
Sınıfın ilklendirme metodu olan NaiveBayes metodu üç parametre almakta. Bu parametrelerin ilki olan “kategoriler” parametresi Object türünde bir nesne dizisidir. Bu diziye sınıflama yapılacak kategori etiketleri alınır.
Naive Bayes Sınıflandırma Uygulaması
![Page 11: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/11.jpg)
İkinci parametre olan int türündeki “sinifKolonu“ parametresi ile hangi nitelik kolonunun sınıflama niteliği olarak kullanılacağı belirtilir. Üçüncü parametre olan “dagilimlar” parametresi ise niteliklerin minimum, maksimum, ortalama, varyansgibi dağılım özelliklerini tablo yapısında metoda sunmaktadır.
Naive Bayes Sınıflandırma Uygulaması
![Page 12: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/12.jpg)
ModeliEgit(DefaultTableModel table): Sınıflayıcı soyut sınıfından alınan bu metot ilk parametresi olan tablo yapısındaki “table” parametresi ile veri setini almaktadır. İnt türündeki “ToplamOrnekSay” değişkeni veri setindeki toplam örnek sayısını tutmaktadır. Sonraki değişken olan int türündeki “EgitimOrnekSay” değişkeni ise kullanıcı arayüzünden alınan “EgitimSetiOrani” değişkeni ile “ToplamOrnekSay” değişkeninin çarpılarak yüzdesinin alınması sonucu elde edilen eğitim amaçlı kullanılacak veri setinin örnek sayısını belirtir.
Naive Bayes Sınıflandırma Uygulaması
![Page 13: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/13.jpg)
“DataSet<String, DefaultTableModel>”, Siniflayicisınıfından gelen Hashtable yapısında bir değişkendir. Burada söz konusu durum sıralamaktan ziyade bir anahtarla ulaşmak olduğundan hashtable kullanımı uygun görülmüştür. SinifDagilimlari değişkeni ise sınıfların nitelikler bazındaki ortalama ve varyanslarınıtablo şeklinde tutmakta. Gauss dağılımı hesaplama aşamasında bu tablodan faydalanıldı. Daha sonra bu değişkeni DataSet hashtable içerisine alarak sınıf içindeki diğer metotlarda kullanılması sağlandı.
Naive Bayes Sınıflandırma Uygulaması
![Page 14: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/14.jpg)
Sinifla(Object[] ornek): Bu metot Object türündeki “ornek” dizisine bir veri örneği almaktadır. Object türündeki “kosulluolslar” vektörü ve Object türündeki “siniflar” değişkenleri koşullu olasılıkları ve sınıfları tutmak amacıyla oluşturuldu.
Naive Bayes Sınıflandırma Uygulaması
![Page 15: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/15.jpg)
Ardından kategori (sınıf) sayısı kadar döngüye girilerek öncelikle sınıf dağılımları tablosundan ele alınacak sınıfın olasılığı “pc” değişkenine alındı.
Daha sonra sınıf dağılımları tablosunun sütun sayısı kadar döngü oluşturularak sınıf dağılımları tablosundan her bir sınıfın ortalama ve varyanları ve ilgili örneğin her niteliği için ortalama (pxort) ve varyans (pxvar) değişkenine alındı.
Naive Bayes Sınıflandırma Uygulaması
![Page 16: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/16.jpg)
Daha sonra px değişkenine verinin olasılığı ve “sonuc” değişkenine ise bayes formülü ile hesaplanan değer verildi.
Bu sonuçlar “kosullulslar” vektörüne, üzerinde işlem yapılan sınıf ise “siniflar” vektörüne eklendi.
Naive Bayes Sınıflandırma Uygulaması
![Page 17: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/17.jpg)
Döngülerin bitiminden sonra ise ArgMax metodu ile “kosulluolslar” vektöründeki maksimum değerin indeksini alınarak “siniflar” vektörüne verildi. “siniflar” vektöründe ilgili indekse karşılık gelen sınıf “bayes” String değişkeni içierisine alınarak metoda dönüş değeri olarak verildi.
Naive Bayes Sınıflandırma Uygulaması
![Page 18: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/18.jpg)
SONUÇLAR
Naive Bayes Sınıflandırma Uygulaması
![Page 19: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/19.jpg)
Weka yazılımı yardımıyla yapılan sınıflama sonuçları geliştirilen uygulama ile karşılaştırıldı.
Naive Bayes Sınıflandırma Uygulaması
![Page 20: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/20.jpg)
Naive Bayes Sınıflandırma Uygulaması
WEKA GELİŞTİRİLEN UYGULAMA
1
Nitelik Sayısı: 55
Sınıf Sayısı: 7
Ayrılış: %80
Toplam Örnek Sayısı: 100000
Doğru Sınıflanan Örnek Sayısı = 14661
Test Örnek Sayısı = 19988
Doğruluk Yüzdesi: % 73.349
Nitelik Sayısı: 13
Sınıf Sayısı: 7
Ayrılış: %80
Toplam Örnek Sayısı: 100000
Doğru Sınıflanan Örnek Sayısı=6022
Test Örnek Sayısı=20000
Doğruluk Yüzdesi: % 30.11
![Page 21: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/21.jpg)
Naive Bayes Sınıflandırma Uygulaması
WEKA GELİŞTİRİLEN UYGULAMA
2
Nitelik Sayısı: 55
Sınıf Sayısı: 7
Ayrılış: %70
Toplam Örnek Sayısı: 100000
Doğru Sınıflanan Örnek Sayısı= 21929
Test Örnek Sayısı= 29982
Doğruluk Yüzdesi: % 73.140
Nitelik Sayısı: 13
Sınıf Sayısı: 7
Ayrılış: %70
Toplam Örnek Sayısı: 100000
Doğru Sınıflanan Örnek Sayısı=13949
Test Örnek Sayısı=30000
Doğruluk Yüzdesi: % 46.497
![Page 22: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/22.jpg)
WEKA GELİŞTİRİLEN UYGULAMA
3
Nitelik Sayısı: 55
Sınıf Sayısı: 7
Ayrılış: %66
Toplam Örnek Sayısı: 100000
Doğru Sınıflanan Örnek Sayısı= 24826
Test Örnek Sayısı= 33980
Model Başarımı: 73.060
Nitelik Sayısı: 13
Sınıf Sayısı: 7
Ayrılış: %66
Toplam Örnek Sayısı: 100000
Doğru Sınıflanan Örnek Sayısı=16794
Test Örnek Sayısı=34000
Model Başarımı: 49.394
Naive Bayes Sınıflandırma Uygulaması
![Page 23: Naive Bayes Sınıflandırma Uygulaması](https://reader036.vdocuments.mx/reader036/viewer/2022081800/559764aa1a28abd13a8b45fc/html5/thumbnails/23.jpg)
TEŞEKKÜRLER