当前位置:   article > 正文

sklearn包中的朴素贝叶斯算法_sklearn native bayes

sklearn native bayes

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.代码示例

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

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

其运行结果如下:

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/869268
推荐阅读
相关标签
  

闽ICP备14008679号