sklearn-- 朴素贝叶斯(监督学习)

朴素贝叶斯

GaussianNB:先验为高斯分布的朴素贝叶斯

MultinomialNB:先验为多项式分布的朴素贝叶斯

BernoulliNB:先验为伯努利分布的朴素贝叶斯

应用场景

一般来说,如果样本特征的分布大部分是连续值,使用GaussianNB会比较好

如果如果样本特征的分大部分是多元离散值,使用MultinomialNB比较合适

如果样本特征是二元离散值或者很稀疏的多元离散值,应该使用BernoulliNB。

高斯分布的朴素贝叶斯

GaussianNB 实现了运用于分类的高斯朴素贝叶斯算法。特征的可能性(即概率)假设为高斯分布

GaussianNB类的主要参数仅有一个,即先验概率priors

这个值默认不给出,如果不给出此时P(Y=c)= mc / m,如果给出的话就以priors 为准

在使用GaussianNB的fit方法拟合数据后,我们可以进行预测。
此时预测有三种方法:

  • predict方法:就是我们最常用的预测方法,直接给出测试集的预测类别输出;
  • predict_proba方法:给出测试集样本在各个类别上预测的概率;
  • predict_log_proba方法:和predict_proba类似,它会给出测试集样本在各个类别上预测的概率的一个对数转化
from sklearn.naive_bayes import GaussianNB
clf = GaussianNB()
#拟合数据
clf.fit(X, Y)
#进行预测
clf.predict([[-0.8, -1]])

多项式分布的朴素贝叶斯

MultinomialNB假设特征的先验概率为多项式分布
参数:

  • alpha:为上面的常数λ。如果你没有特别的需要,用默认的1即可。如果发现拟合的不好,需要调优时,可以选择稍大于1或者稍小于1的数
  • fit_prior:是否要考虑先验概率,如果是false,则所有的样本类别输出都有相同的类别先验概率;否则可以自己用第三个参数class_prior输入先验概率,或者不输入第三个参数class_prior让MultinomialNB自己从训练集样本来计算先验概率
  • class_prior:输入先验概率,若不输入第三个参数class_prior让MultinomialNB自己从训练集样本来计算先验概率

伯努利分布的朴素贝叶斯

BernoulliNB一共有4个参数,其中3个参数的名字和意义和MultinomialNB完全相同

唯一增加的一个参数是binarize,这个参数主要是用来帮BernoulliNB处理二项分布的。如果不输入,则BernoulliNB认为每个数据特征都已经是二元的。否则的话,小于binarize的会归为一类,大于binarize的会归为另外一类

参考链接:https://www.jianshu.com/p/4589a46f9ef0

你可能感兴趣的:(机器学习算法)