1.朴素贝叶斯模型
朴素贝叶斯(Native Bayes)算法是基于贝叶斯定理和特征条件独立假设的分类算法。sklearn中的native_bayes模块提供了4中朴素贝叶斯模型。其具体如下:
模型 | 描述 | 参数估计公式 |
---|---|---|
GaussianNB | 这种模型假设特征符合高斯分布。由概率密度函数可知,这个模型适用于数值型特征。 | ![]() |
MultinomialNB | 这个模型假设特征复合多项式分布,是一种非常典型的文本分类模型。模型内部带有平滑参数![]() | ![]() |
ComplementNB | 是MultinomialNB模型的一个变种,比较适用于不平衡的数据集。在文本分类上的结果通常比MultinomialNB模型好。 | |
BernoulliNB | 这种模型适用于多元伯努利分布。即,每个特征都是二值变量,如果不是二值变量,该模型可以先对变量进行二值化。 | ![]() |
补充:
- 二项分布的典型例子就是抛硬币,硬币正面向上的概率为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