4-3 朴素贝叶斯 最大似然估计算法过程
Posted windmissing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4-3 朴素贝叶斯 最大似然估计算法过程相关的知识,希望对你有一定的参考价值。
朴素贝叶斯算法
输入:
样本数据T,包含m个n维特征的样本。
aij为每个样本特征的第i个特征可取到的第j个值。
测试样本x
输出:
对x的预测分类。
计算先验概率
P k ( Y = C k ) = ∑ I ( y = C k ) m P_k(Y=C_k) = \\frac \\sum I(y=C_k)m Pk(Y=Ck)=m∑I(y=Ck)
计算每个特征每个取值的条件概率
P i j k P_ijk Pijk 为 当 为当 为当 y = C k y=C_k y=Ck 时 , X 第 j 个 特 征 为 时,X第j个特征为 时,X第j个特征为 a i j a_ij aij的条件概率
P i j k = ∑ I ( X ( i ) = a i j , y = C k ) ∑ I ( y = C k ) P_ijk = \\frac\\sum I(X^(i) = a_ij, y=C_k)\\sum I(y=C_k) Pijk=∑I(y=Ck)∑I(X(i)=aij,y=Ck)
计算假如 y = C k y=C_k y=Ck时出现X=x的条件概率
对所有
C
k
C_k
Ck
计
算
计算
计算
P
(
X
=
x
∣
Y
=
C
k
)
P(X=x|Y=C_k)
P(X=x∣Y=Ck)
P
(
X
=
x
∣
Y
=
C
k
)
P(X=x|Y=C_k)
P(X=x∣Y=Ck)
为
当
为当
为当
y
=
C
k
y=C_k
y=Ck时,x的每一个特征的条件概率的乘积。
P
(
X
=
x
∣
Y
=
C
k
)
=
∏
P
(
x
(
i
)
=
a
i
∣
y
=
C
k
)
P(X=x|Y=C_k) = \\prod P(x^(i)=a_i|y=C_k)
P(X=x∣Y=Ck)=∏P(x(i)=ai∣y=Ck)
计算当X=x时所有 C k C_k Ck的后验概率的分子
P
(
Y
=
C
k
∣
X
=
x
)
=
P
(
X
=
x
∣
Y
=
C
k
)
P
(
Y
=
C
k
)
P
(
X
=
x
)
P(Y=C_k|X=x) = \\fracP(X=x|Y=C_k)P(Y=C_k)P(X=x)
P(Y=Ck∣X=x)=P(X=x)P(X=x∣Y=Ck)P(Y=Ck)
以上公式中分子所有需要的内容都在以前已经计算出,代入公式即可
不需要计算分母。因为最终要用到的不是后验概率的具体数值,只是要比较大小。中所有C_k的后验概率公式,分母都是相同的,不影响大小的比较,所以不用计算出来。
确定x的分类
当X=x时所有 C k C_k Ck 的 后 验 概 率 中 分 子 取 得 最 大 概 率 的 那 的后验概率中分子取得最大概率的那 的后验概率中分子取得最大概率的那 C k C_k Ck即x的分类
代码
def NaiveteBayes(T, y, a, Y, x):
# 计算先验概率
prepro =
for yRange in Y:
#print (yRange, Y[Y==yRange].shape[0], )
prepro[yRange] = y[y==yRange].shape[0]/y.shape[0]
print('先验概率:',prepro)
# 计算条件概率
conpro =
for i in range(len(a)): # 遍历每个特征
for j in a[i]: # 遍历特征的每个取值
for k in Y:
conpro[(i,j, k)] = X[(y==k)&(X[:,i]==j),:].shape[0]/X[y==k,:].shape[0]
print('条件概率:',conpro)
# 计算后验概率的分子
postpro =
for yRange in Y:
pro = 1
for i in range(x.shape[0]):
pro = pro * conpro[(i, x[i], yRange)]
postpro[yRange] = pro * prepro[yRange]
print ('后验概率', postpro)
# 确定X的分类
import operator
return sorted(postpro.items(), # iterable -- 可迭代对象,在python2中使用A.iteritems(),在python3中使用A.items()
key=operator.itemgetter(1), # key -- 主要是用来进行比较的元素,指定可迭代对象中的一个元素来进行排序,这里指基于item的value进行排序
reverse=True)[0][0] # reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
# 排序结果是一个list
以上是关于4-3 朴素贝叶斯 最大似然估计算法过程的主要内容,如果未能解决你的问题,请参考以下文章