sklearn的全称叫Scikit-learn,它给我们提供了3个朴素贝叶斯分类算法,分别是高斯朴素贝叶斯(GaussianNB)、多项式朴素贝叶斯(MultinomialNB)和伯努利朴素贝叶斯(BernoulliNB)。这三种算法适合应用在不同的场景下,我们应该根据特征变量的不同选择不同的算法:
高斯朴素贝叶斯
特征变量是连续变量,符合高斯分布,比如说人的身高,物体的长度。
from sklearn.naive_bayes import GaussianNB
多项式朴素贝叶斯
特征变量是离散变量,符合多项分布,在文档分类中特征变量体现在一个单词出现的次数,或者是单词的TF-IDF值等。
from sklearn.naive_bayes import MultinomialNB
伯努利朴素贝叶斯
特征变量是布尔变量,符合0/1分布,在文档分类中特征是单词是否出现。
from sklearn.naive_bayes import BernoulliNB
三种贝叶斯的区别
伯努利朴素贝叶斯是以文件为粒度,如果该单词在某文件中出现了即为1,否则为0。
而多项式朴素贝叶斯是以单词为粒度,会计算在某个文件中的具体次数。
而高斯朴素贝叶斯适合处理特征变量是连续变量,且符合正态分布(高斯分布)的情况。
比如身高、体重这种自然界的现象就比较适合用高斯朴素贝叶斯来处理。而文本分类是使用多项式朴素贝叶斯或者伯努利朴素贝叶斯。
