scikit-learn学习之贝叶斯分类算法

来源:互联网 发布:淘宝网如何提高流量 编辑:程序博客网 时间:2024/05/18 16:17

目录(?)[+]

======================================================================

本系列博客主要参考 Scikit-Learn 官方网站上的每一个算法进行,并进行部分翻译,如有错误,请大家指正 

转载请注明出处,谢谢  

======================================================================


另外在《机器学习实战》中的  朴素贝叶斯分类算法比较深刻的解读了朴素贝叶斯分类算法的原理,基于朴素贝叶斯分类算法构建文本分类器的Python实现主要用Python实现贝叶斯分类,并构建了一个简单的文本分类器模型,接下来将着重解读scikit-learn中关于贝叶斯算法的一些说明


1:朴素贝叶斯算法说明

2:高斯朴素贝叶斯(Gaussian Naive Bayes)

3:多项式朴素贝叶斯(Multinomial Naive Bayes)

4:伯努利朴素贝叶斯( Bernoulli Naive Bayes)



一:朴素贝叶斯算法说明


朴素贝叶斯算法是建立在每一个特征值之间时独立的基础上的监督学习分类算法,而这也是称他为 “朴素”贝叶斯的缘由,在现实环境中,很难达到两个特征值之间绝对的相互独立。在给定一个类变量Y和依赖的特征向量x_1通过x_n,贝叶斯定理的状态下面的关系:

                                                                      

假设两个特征值之间时相互独立的                


对于所有的 i 值,这种关系被简化为             

由于P(x_1,....  ,x_n)是恒定的给定的输入,我们可以使用以下的分类规则(前者正比于后者):

                                                                        

我们可以使用最大后验概率(MAP)来估计p(y)和p(xi|y),p(y)是在训练集中y发生的概率

不同朴素贝叶斯分类算法是因为他们对P(Xi|y)做出了不同的假设

尽管朴素贝叶斯的假设过于简单,但在已有的应用中,如文档分类和垃圾邮件分类,他都表现出了相当好的效果(至于理论上的原因,为什么朴素贝叶斯的效果很好,并且他适合处理的数据类型,请继续往下阅读)

和其他更先进的方法相比,朴素贝叶斯算法学习和分类的过程效率更高,每个类条件特征的独立分布意味着每个类分布可以独立的估计为一维分布,这反过来有助于缓解数据降维所带来的麻烦

另一方面,尽管朴素贝叶斯分类被归纳为一个高效的分类器,但是他有一个坏的估计,因为对于他的输出预测并不能被认真看待

上边提到了不同的贝叶斯分类算法是因为他们对P(Xi|y)做出了不同的假设,下面我们就来看集中常见的P(Xi|y)的假设以及scikit-learn中的实现方法


二:高斯朴素贝叶斯


GaussianNB 继承高斯朴素贝叶斯,特征可能性被假设为高斯:

                                                                       

代码示例如下:

[python] view plain copy
  1. #高斯朴素贝叶斯  
  2. import numpy as np  
  3. X = np.array([[-1, -1], [-2, -1], [-3, -2], [11], [21], [32]])  
  4. Y = np.array([111222])  
  5. from sklearn.naive_bayes import GaussianNB  
  6. clf = GaussianNB().fit(X, Y)  
  7. print clf.predict([[-0.8,-1]])  
  8.   
  9. ''''' 
  10. partial_fit说明:增量的训练一批样本 
  11. 这种方法被称为连续几次在不同的数据集,从而实现核心和在线学习,这是特别有用的,当数据集很大的时候,不适合在内存中运算 
  12. 该方法具有一定的性能和数值稳定性的开销,因此最好是作用在尽可能大的数据块(只要符合内存的预算开销) 
  13. '''  
  14. clf_pf = GaussianNB().partial_fit(X, Y, np.unique(Y))  
  15. print clf_pf.predict([[-0.8,-1]])  
输出结果为:


更多关于高斯贝叶斯分布的请参考:点击阅读



三:多项式分布


MultinomialNB实现multinomially分布数据的贝叶斯算法,是一个经典的朴素贝叶斯文本分类中使用的变种(其中的数据是通常表示为词向量的数量,虽然TF-IDF向量在实际项目中表现得很好),对于每一个y来说,分布通过向量参数化,n是类别的数目(在文本分类中,表示词汇量的长度) 表示标签i出现的样本属于类别y的概率


该参数   是一个平滑的最大似然估计,即相对频率计数:

                                                                                                                    


  表示标签i在样本集T中属于类别y的 数目


 表示在所有标签中类别y出现的数目


平滑先验 a >=0表示学习样本中不存在的特征并防止在计算中概率为0,设置alpha = 1被称为拉普拉斯平滑,当α<1称为Lidstone平滑


代码示例如下:


[python] view plain copy
  1. #多项式分布  
  2. import numpy as np  
  3. X = np.random.randint(5, size=(6100))  
  4. y = np.array([123456])  
  5. from sklearn.naive_bayes import MultinomialNB  
  6. clf = MultinomialNB().fit(X, y)  
  7. print clf.predict(X[2:3])  

输出为   [3]


更多关于多项式分布请参考:点击阅读



四:伯努利朴素贝叶斯


BernoulliNB实现了朴素贝叶斯训练和分类算法是根据多元伯努利分布的分布数据;例如,可能会有多个特征,但每一个被假定为一个二进制值(伯努利、布尔)变量。因此,这类要求的样品被表示为二进制值的特征向量;如果交给其他任何类型的数据,一个bernoullinb实例可以进行输入(取决于二值化参数)

伯努利朴素贝叶斯决策规则的基础上


                                                                        


在文本分类的情况下,词的出现向量(而不是字计数向量)可以用来训练和使用该分类。bernoullinb可能会执行一些数据集上的更好,尤其是那些短的文件。如果时间允许的话,建议对两种模型进行评估。


示例代码如下:


[python] view plain copy
  1. #伯努利分布  
  2. import numpy as np  
  3. X = np.random.randint(2, size=(6100))  
  4. Y = np.array([123445])  
  5. from sklearn.naive_bayes import BernoulliNB  
  6. clf = BernoulliNB()  
  7. clf.fit(X, Y)  
  8. BernoulliNB(alpha=1.0, binarize=0.0, class_prior=None, fit_prior=True)  
  9. print(clf.predict(X[2:3]))  


输出结果为  [3]

更多关于伯努利朴素贝叶斯请参考:点击阅读

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电动车故障显示m怎么办 电动车上面出现m怎么办 佰仟乐购额度没有了怎么办 交易密码忘记了怎么办? 电脑打开没网怎么办 网络配适器无法运行怎么办 电脑dns没有响应怎么办 win7系统没有网上邻居怎么办 win10网络重置了怎么办 win7桌面没有网上邻居怎么办 win7电脑没有网上邻居怎么办 无线网连接受限怎么办 win7账户被锁定怎么办 贷款sdk授权失败怎么办 京东保价发票怎么办 淘宝购物出现质量问题怎么办 淘宝购物降价了怎么办 淘宝购物物流慢怎么办 在淘宝购物退货怎么办 淘宝购物未付款怎么办 淘宝购物余额不足怎么办 淘宝购物漏发货怎么办 京东618无货怎么办 iis默认文档无效怎么办? 购物卡没有磁性怎么办 墙面贴纸没有贴怎么办 车显示电池符号怎么办 遇上北京购物团怎么办 钱柜老是钱不见怎么办 写真顾客退单怎么办 电视不支持投屏怎么办 qq转错账的钱怎么办 qq关注不了别人怎么办 换货忘记要单号怎么办 快递提前签收了怎么办 签收了不明快递怎么办 京东签收了怎么办 快递被签收了怎么办 香港旅游团强制购物怎么办 爱奇艺京东会员领不了怎么办 买手机买到翻新机怎么办