Ana içeriğe atla

Adım Adım Weka Kullanımı

WEKA bir veri madenciliği uygulamasıdır ve Yeni Zellanda'daki Waikato Üniversitesi tarafından geliştirilmektedir. Bu yazının amacı WEKA Explorer'ı kullanmayı öğretmektir.




1. Simple CLI basit bir komut satırı arayüzüdür ve Weka komutlarını direk çalıştırmayı sağlar.

2. Explorer veriyi keşfetmek için oluşturulmuş bir ortamdır.  

3. Experimenter deneyler yapmak ve öğrenme şemaları arasında istatistiksel testler yapmak için oluşturulmuş bir ortamdır. 

4. KnowledgeFlow Java-Beans tabanlı ayar yapmak ve makine öğrenme deneyleri çalıştırmak için oluşturulmuş bir arayüzdür.

Alıştırmalar için 'Explorer'ı kullanacağım. Explorer bölümüne geçmek için Explorer butonuna tıklamak yeterli.



ÖN İŞLEM

Verinin ön işlemden geçmesi gerektiği zamanlarda Preprocessing bölümünden dosyanızı yükleyip işleme tabi tutabilirsiniz. Weka'nın kabul ettiği dosya tipleri: ARFF, CSV, C4.5, binary, libsvm, XRFF; ayrıca url üzerinden yada SQL veri tabanı üzerinden de dosyaları okuyabilir. Ancak ilk örnek için zaten Weka'nın bize verdiği data setlerini kullanacağımız için bu bölüme ihtiyacımız olmayacak.

Dosya Çevirimi

Eğer veri setiniz aşağıdaki resimdeki gibi Excel dosyası içerisinde kayıtlı ise, onu WEKA için ARFF dosya formatına çevirmeniz gerekiyor. Benim verilerim iris çiçeğinin 3 tipinin özelliklerini içeriyor. Iris veri seti hakkında daha fazla bilgi almak için buraya bakmalısınız.


Dosyayı önce CSV dosya tipine çevirmelisiniz. Daha sonra çevirdiğimiz dosyayı bir metin editörü ile açtığınızda aşağıdaki gibi bir görüntü ile karşılaşacaksınız:


Bu dosyayı ARFF formatına çevirmek için ilk satırı değiştirmelisiniz. @relation tag'i ekleyip yanına veri setinizin ismini yazmalısınız; ayrıca sütun isimlerinizi de @attribute tag'i ile belirtmeli ve sütunlarınızın tiplerini de yanına yazmalısınız eğer rakam içeriyorsa real olarak etiketlemeli eğer string bir değer içeriyorsa hangi değerleri içerebileceğini yanına parantez içerisinde yazmalısınız, örneğin iris çiçeğinin üç tipi bulunabilirmiş bu yüzden son sütunumuz olan class ın yanına 3 tipi parantez içerisinde yazdık. Son olarak da verinizin başladığı satırdan bir önceki satıra @data tag'ini ekledik. Aşağıda yazdıklarımı daha net olarak görebilirsiniz.


Bu dosyayı .arff olarak kaydetmelisiniz.

Local Dosya Sisteminde Dosya Açmak

Preprocess bölümünden 'Open file' butonuna tıklayın, daha sonra dosyanın bulunduğu yerden .arff uzantılı olarak kaydettiğiniz dosyanızı seçiniz. Eğer elinizde CSV dosyası varsa WEKA bunu ARFF dosyasına da çevirebiliyor. 


Dosya yüklendikten sonra Attributes bölümünde WEKA'nın sizin ARFF dosyanızda eklediğiniz sütun isimlerini tanıdığını göreceksiniz.  Ön işlem araçları WEKA'da filtreler olarak isimlendirilir. Örneğin Association Rule Mining kullanacaksanız, bu durumda numeric yada sürekli attribute'lerin ayrıklaştırılması gerekir. Bunu da Filter bölümünde Choose -> filter -> supervised -> attribute -> Discritize seçtikten sonra Apply butonuna basarak uygulayabilirsiniz.

Yorumlar

Yorum Gönder

Bu blogdaki popüler yayınlar

Weka ile Sınıflandırma

"Preprocessing" aşamasında veri setimizi yükledik ve eğer gerekliyse ön aşamadan geçirdikten sonra sınıflandırma aşamasına geçebiliriz. Weka nedir, Ön İşlem bölümünde neler yapılır sorusunun cevapları için önce bu yazımı okumalısınız.
SINIFLANDIRMA
Verimizi ön işlemden geçirdikten sonra artık sınıflandırabiliriz. WEKA'yı kullanarak bir çok sınıflandırıcıyı kullanabilirsiniz; Karar Ağaçları, SVM, Multi-layer Perceptrons vs. Veri setinizi yükledikten sonra Classify bölümüne tıklayarak sınıflandırma sayfasına erişebilirsiniz. Ön tanımlı ayarlara göre ZeroRalgoritması gelmektedir. Bu algoritmanın başarımı çok düşük olduğu için ben "Iris" veri seti için iyi sonuç verdiği bilinen J48 algoritması ile devam edeceğim:

Java ile Thread Pool Kullanımı

Oluşturacağımız uygulama 100 x 100 boyutlu bir matrisin içerisinde arttırma işlemi yapacaktır. Bu işlem için Runnable yada Callable sınıfı kullanılabilir. Runnable objesi olarak tanımladığımızda threadlerimiz sonlandırılana kadar sürekli olarak çalışacak ve kuyruğu sürekli olarak kontrol edip yeni bir görev olup olmadığına bakacaklardır. Thread class'ımız bize execute() adında bir method kullanım imkanı sağlamaktadır; execute(Runnable myR) şeklinde bir kullanım ile kuyruğa yeni Runnable objeler eklememize imkan sağlamaktadır.