2010-05-22 13 views
7

Okul ataması olarak, Java'da yapmayı planladığım Naïve Bayes algoritmasını uygulamak zorundayım.Java'da Naïve Bayes algoritmasının uygulanması - Bazı rehberliğe ihtiyacınız var

Nasıl yapıldığını anlamaya çalışırken, bu konuyla ilgili bir bölümü olan ancak ilerlememi engelleyen bazı birincil noktalardan hala emin olmadığım "Veri Madenciliği - Pratik Makine Öğrenme Araçları ve Teknikleri" adlı kitabı okudum.

Burada bir çözüm bulmak istemediğimden, size kafamın içinde ne düşündüğümü söylerim, doğru bir yaklaşım olduğunu düşünüyorum ve karşılığında çok takdir edilecek olan düzeltme/rehberlik isteyin. Naïve Bayes algoritması, Veri madenciliği ve genel programlamada mutlak bir başlangıç ​​olduğumu lütfen unutmayın: aptal yorumları/hesaplamaları aşağıda görebilirsiniz:

Verdiğim eğitim verisi sayısal olan 4 öznitelik/özellik içerir. normalize (aralığındaki [0 1]) Weka (hiç eksik değerler) ve bir itibari sınıfını kullanarak (evet/hayır) verileri bir csv dosyasına gelen

1) dolayısıyla İÇİN

    * Verilen özelliklerdir sayısalsa sayısal ben PDF (olasılık yoğunluk işlevi) formülü kullanıyorum.
      + i ilk onlar hiçbir sınıfa evet ya sınıfta olmanıza bağlı olarak özelliklerini ayırmak java PDF hesaplamak ve farklı diziye tutun (array class yes and array class no)
      + Sonra her biri için ortalama ( sum of the values in row/number of values in that row) ve standart kehanet hesaplamak her sınıfın 4 nitelikleri (sütunlar)
      + Şimdi Sonra
için ait olduğu sınıf gösterir P(yes | E) ve P(no | E) i multiply the PDF value of all 4 given attributes and compare which is larger bulmak + verilen bir değerin PDF (n) i
    (n-mean)^2/(2*SD^2), yapmak bulmak için

    Java temposu içinde, öznitelik değerlerini kaydetmek için ArrayList of ArrayList ve Double kullanıyorum.

    Son olarak, yeni veriler nasıl edineceğinizden emin değilim? Giriş dosyası (csv gibi) veya komut istemi sormalı mıyım ve 4 değer mi sormalıyım?

    Şimdilik burada duracağım (daha fazla sorunuz var) ama bunun ne kadar sürdüğüne bakılmaksızın herhangi bir cevap almayacağı konusunda endişeliyim. Zamanlarını sorunlarımı ve yorumumu okuyanlar için gerçekten minnettar olacağım.

+0

Algoritma seslerini nasıl uygulayacağımın genel görünümü doğru mu? – ke3pup

cevap

5

Yaptığınız şey neredeyse doğru. İşte

  + Then to find P(yes | E) and P(no | E) i multiply the PDF value of all 4 given attributes and compare which is larger, which indicates the class it belongs to 

, sen önce P (evet) ya da P (hayır) çoğalmaya unuttum. Karar formülleri hatırlayın: Naif Bayes (ve diğer gözetimli öğrenme/sınıflandırma algoritmalarının) için

P(Yes | E) ~= P(Attr_1 | Yes) * P(Attr_2 | Yes) * P(Attr_3 | Yes) * P(Attr_4 | Yes) * P(Yes) 

, sen eğitim verileri ve test verileri olması gerekir. Modeli eğitmek ve test verileri hakkında tahmin yapmak için eğitim verilerini kullanıyorsunuz. Eğitim verilerini test verileri olarak kullanabilirsiniz. Ya da csv dosyasını iki parçaya ayırabilirsiniz; biri eğitim için ve test için bir tane. Ayrıca, csv dosyasında çapraz doğrulamayı da yapabilirsiniz.

+0

Mümkünse kesinlikle çapraz doğrulama kullanın. Bunu önlemek için egzersiz verilerinizi asla test etmeyin. –

+0

@Shaggy, eğitim üzerinde test yapmak için bir seçenek ve yeni bir veri kümesi veya yeni bir sınıflandırıcı için bir zorunluluktur. Optimizasyonun ne kadar iyi yapıldığını anlatır. Bir sınıflandırıcı eğitim verileri üzerinde iyi performans göstermezse, bu sınıflayıcı veri kümesi için kullanılamaz. Eğitim verilerinin performansı, bir sınıflandırıcı yazılırken teşhis amacıyla da kullanılabilir. –

İlgili konular