赞
踩
如果没有很多数据,贝叶斯模型会比很多复杂的模型获得更好的性能,因为复杂的模型用了太多假设,易产生欠拟合。
在scikit-learn中,常用的3种朴素贝叶斯分类算法:GaussianNB(高斯朴素贝叶斯)、MultinomialNB(多项式朴素贝叶斯)、BernoulliNB(伯努利朴素贝叶斯)
这三个类适用的分类场景各不相同,一般来说
高斯朴素贝叶斯:sklearn.naive_bayes.GaussianNB(priors=None)
GaussianNB假设特征的先验概率为正态分布:
P
(
X
j
=
x
j
∣
Y
=
C
k
)
=
1
2
π
σ
k
2
e
x
p
(
−
(
x
j
−
μ
k
)
2
2
σ
k
2
)
P(X_j=x_j|Y=C_k) = \frac{1}{\sqrt{2\pi\sigma_k^2}}exp{(}-\frac{(x_j - \mu_k)^2}{2\sigma_k^2}{)}
P(Xj=xj∣Y=Ck)=2πσk2
1exp(−2σk2(xj−μk)2)
其中
C
k
C_k
Ck为Y的第k类类别,GaussianNB会根据训练集求出
μ
k
μ_k
μk 和
σ
k
2
σ^2_k
σk2。
clf属性:
多项式朴素贝叶斯:sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
MultinomialNB假设特征的先验概率为多项式分布:
P
(
X
j
=
x
j
l
∣
Y
=
C
k
)
=
m
k
j
l
+
λ
m
k
+
O
j
λ
P(X_j=x_{jl}|Y=C_k) = \frac{m_{kjl} + \lambda}{m_k + O_j\lambda}
P(Xj=xjl∣Y=Ck)=mk+Ojλmkjl+λ
m
k
m_k
mk是训练集中输出为第k类的样本个数。λ 为一个大于0的常数,即拉普拉斯平滑。
clf属性:
伯努利朴素贝叶斯:sklearn.naive_bayes.BernoulliNB(alpha=1.0, binarize=0.0,
fit_prior=True,class_prior=None)
BernoulliNB假设特征的先验概率为二元伯努利分布:
P
(
X
j
=
x
j
l
∣
Y
=
C
k
)
=
P
(
j
∣
Y
=
C
k
)
x
j
l
+
(
1
−
P
(
j
∣
Y
=
C
k
)
)
(
1
−
x
j
l
)
P(X_j=x_{jl}|Y=C_k) = P(j|Y=C_k)x_{jl} + (1 - P(j|Y=C_k))(1-x_{jl})
P(Xj=xjl∣Y=Ck)=P(j∣Y=Ck)xjl+(1−P(j∣Y=Ck))(1−xjl)
x
j
l
x_{jl}
xjl只能取值0或者1。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。