sklearn包中的朴素贝叶斯算法

1.朴素贝叶斯模型

朴素贝叶斯(Native Bayes)算法是基于贝叶斯定理和特征条件独立假设的分类算法。sklearn中的native_bayes模块提供了4中朴素贝叶斯模型。其具体如下:

模型描述参数估计公式
GaussianNB这种模型假设特征符合高斯分布。由概率密度函数可知,这个模型适用于数值型特征。f(x_{i}|y)=\frac{1}{\sqrt{2\pi\sigma_{y}^{2} }}exp(-\frac{(x_{i}-\mu _{y})^{2}}{2\sigma_{y}^{2}} )
MultinomialNB这个模型假设特征复合多项式分布,是一种非常典型的文本分类模型。模型内部带有平滑参数\alpha\widehat{\theta}_{yi}=\frac{N_{yi}+\alpha }{N_{y}+\alpha n}
ComplementNB是MultinomialNB模型的一个变种,比较适用于不平衡的数据集。在文本分类上的结果通常比MultinomialNB模型好。

\widehat{\theta}_{ci}=\frac{\alpha_{i}+\sum_{j:y_{j}\neq c} d_{ij}} {\alpha+\sum_{j:y_{j}\neq c}\sum_{k}d_{kj}}

\omega_{ci}=log\widehat{\theta }_{ci}

\omega_{ci}=\frac{\omega_{ci}}{\sum_{j}\left | \omega_{cj} \right | }

BernoulliNB这种模型适用于多元伯努利分布。即,每个特征都是二值变量,如果不是二值变量,该模型可以先对变量进行二值化。P(x_{i}|y)=P(i|y)x_{i}+(1-P(i|y))(1-x_{i})

补充:

  • 二项分布的典型例子就是抛硬币,硬币正面向上的概率为p,重复扔n次硬币,k次为正面的概率。 把二项分布公式推广至多种状态,就得到了多项分布。

2.代码示例

以肺癌数据集为例,比较多个模型的效率。具体代码如下:

from sklearn.naive_bayes import MultinomialNB,GaussianNB,BernoulliNB
from sklearn.naive_bayes import ComplementNB
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import cross_val_score
X,y=load_breast_cancer().data,load_breast_cancer().target
gn1=GaussianNB()
gn2=MultinomialNB()
gn3=BernoulliNB()
gn4=ComplementNB()
for model in [gn1,gn2,gn3,gn4]:
    scores=cross_val_score(model,X,y,cv=10,scoring='accuracy')
    print("Accuracy:{:.3f}".format(scores.mean()))

其运行结果如下:

参考:
1. https://scikit-learn.org/stable/modules/naive_bayes.html#naive-bayes

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值