朴素贝叶斯一共有三种方法,分别是高斯朴素贝叶斯、多项式分布贝叶斯、伯努利朴素贝叶斯,在介绍不同方法的具体参数前,我们先看看这三种方法有什么区别。
这三种分类方法其实就是对应三种不同的数据分布类型。
高斯分布又叫正太分布,我们把一个随机变量X服从数学期望为μ、方差为σ^2的数据分布称为正太分布,当数学期望μ=0
,方差σ=1
时称为标准正态分布。
正太分布概率图
伯努利分布又称“零一分布”、“两点分布”(即结果要么是0要么是1),是二项分布的特殊情况,之所以是特殊的二项分布,是因为二项分布是多重伯努利实验的概率分布。举个例子就是,伯努利分布是只扔一次硬币正面反面的概率,而二项分布是扔多次硬币以后得到正面反面的概率。
多项式分布(Multinomial Distribution)是二项式分布的推广,二项分布是随机结果值只有两个(投硬币的结果),多项式分布是指随机结果值有多个(摇骰子的结果)。
多项式模型朴素贝叶斯和伯努利模型朴素贝叶斯常用在文本分类问题中,高斯分布的朴素贝叶斯主要用于连续变量中,且假设连续变量是服从正太分布的。
高斯朴素贝叶斯
高斯朴素贝叶斯算法是假设特征的可能性(即概率)为高斯分布。
class sklearn.naive_bayes.GaussianNB(priors=None)
priors
:先验概率大小,如果没有给定,模型则根据样本数据自己计算(利用极大似然法)。
对象
class_prior_
:每个样本的概率
class_count
:每个类别的样本数量
theta_
:每个类别中每个特征的均值
sigma_
:每个类别中每个特征的方差
多项式分布贝叶斯
适用于服从多项分布的特征数据。
class sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
alpha
:先验平滑因子,默认等于1,当等于1时表示拉普拉斯平滑。
fit_prior
:是否去学习类的先验概率,默认是True
class_prior
:各个类别的先验概率,如果没有指定,则模型会根据数据自动学习, 每个类别的先验概率相同,等于类标记总个数N分之一。
对象
class_log_prior_
:每个类别平滑后的先验概率
intercept_
:是朴素贝叶斯对应的线性模型,其值和class_log_prior_相同feature_log_prob_
:给定特征类别的对数概率(条件概率)。 特征的条件概率=(指定类下指定特征出现的次数+alpha)/(指定类下所有特征出现次数之和+类的可能取值个数*alpha)coef_
: 是朴素贝叶斯对应的线性模型,其值和feature_log_prob相同
class_count_
: 训练样本中各类别对应的样本数
feature_count_
: 每个类别中各个特征出现的次数
伯努利朴素贝叶斯
用于多重伯努利分布的数据,即有多个特征,但每个特征都假设是一个二元 (Bernoulli, boolean) 变量。
class sklearn.naive_bayes.BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)
alpha
:平滑因子,与多项式中的alpha一致。
binarize
:样本特征二值化的阈值,默认是0。如果不输入,则模型会认为所有特征都已经是二值化形式了;如果输入具体的值,则模型会把大于该值的部分归为一类,小于的归为另一类。
fit_prior
:是否去学习类的先验概率,默认是True
class_prior
:各个类别的先验概率,如果没有指定,则模型会根据数据自动学习, 每个类别的先验概率相同,等于类标记总个数N分之一。
对象
class_log_prior_
:每个类别平滑后的先验对数概率。
feature_log_prob_
:给定特征类别的经验对数概率。
class_count_
:拟合过程中每个样本的数量。
feature_count_
:拟合过程中每个特征的数量。
方法
贝叶斯的方法和其他模型的方法一致。
fit(X,Y)
:在数据集(X,Y)上拟合模型。
get_params()
:获取模型参数。
predict(X)
:对数据集X进行预测。
predict_log_proba(X)
:对数据集X预测,得到每个类别的概率对数值。predict_proba(X)
:对数据集X预测,得到每个类别的概率。
score(X,Y)
:得到模型在数据集(X,Y)的得分情况。