朴素贝叶斯分类法 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
> 
> 

  

 

posted @ 2015-06-19 16:14  钮甲跳  阅读(5458)  评论(0编辑  收藏  举报