朴素貝葉斯分類法 Naive Bayes ---R


朴素貝葉斯算法

 【轉載時請注明來源】:http://www.cnblogs.com/runner-ljt/

   Ljt   勿忘初心  無畏未來

   作為一個初學者,水平有限,歡迎交流指正。


 

朴素貝葉斯分類法是一種生成學習算法。

假設:在y給定的條件下,各特征Xi 之間是相互獨立的,即滿足 : P(x1,x2.....x| y)=∏ P(xi | y)    (該算法朴素的體現之處)

原理:  貝葉斯公式        

                                

思想:對於待分類樣本,求出在該樣本的各特征出現的條件下,其屬於每種類別的概率(P(Yi|X)),哪種類別的概率大就將該樣本判別為哪一種類別。

                               

          (P(X)為x的先驗概率,與Y無關,在具體計算是分母可以直接忽略,只計算分子)


 

P(xi | y)的估計

(1)特征屬性為離散值

       直接用每一類別中各名錄出現的頻率作為其概率值P(xi|y)

(2)特征屬性為連續性值

       假設特征屬性服從正太分布,用各類別的樣本均值及標准差作為正態分布的參數。

                                                   

                           


 

Laplace 平滑

     在訓練樣本中,某一特征的屬性值可能沒有出現,為了保證一個屬性出現次數為0時,能夠得到一個很小但是非0的概率值。

     在計算P(xi|y)時分子加上 Pi*U ; 分母加上 U  。

     其中Pi 表示xi 出現的先驗概率,數值較大的U表示這些先驗值是比較重要的,數值較小的U表示這些先驗值的影響較小;

     一般情況下,Pi=1/N . (N為該特征所含有的屬性類的數目)

 


 

R實現

包:e1071   ; 函數:naiveBayes

 

> 
> library(e1071)
> head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
> classifier<-naiveBayes(iris[,c(1:4)],iris[,5])
> classifier

Naive Bayes Classifier for Discrete Predictors

Call:
naiveBayes.default(x = iris[, c(1:4)], y = iris[, 5])

A-priori probabilities:
iris[, 5]
    setosa versicolor  virginica 
 0.3333333  0.3333333  0.3333333 

Conditional probabilities:
            Sepal.Length
iris[, 5]     [,1]      [,2]
  setosa     5.006 0.3524897
  versicolor 5.936 0.5161711
  virginica  6.588 0.6358796

            Sepal.Width
iris[, 5]     [,1]      [,2]
  setosa     3.428 0.3790644
  versicolor 2.770 0.3137983
  virginica  2.974 0.3224966

            Petal.Length
iris[, 5]     [,1]      [,2]
  setosa     1.462 0.1736640
  versicolor 4.260 0.4699110
  virginica  5.552 0.5518947

            Petal.Width
iris[, 5]     [,1]      [,2]
  setosa     0.246 0.1053856
  versicolor 1.326 0.1977527
  virginica  2.026 0.2746501
 
> #A-priori probabilities 為 樣本中個類別出現的頻率
> #Conditional probabilities (該樣本的特征屬於連續型值)該值表示各特征在各類別上的服從正太分布下的均值和標准差
> 
>
>
> #檢驗分類器效果
> table(predict(classifier,iris[,-5]),iris[,5])
            
             setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         47         3
  virginica       0          3        47
> 
> #構造新數據並進行預測
> newdata<-data.frame(Sepal.Length=5, Sepal.Width=2.3, Petal.Length=3.3, Petal.Width=1) 
> predict(classifier,newdata)
[1] versicolor
Levels: setosa versicolor virginica
> 
> 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM