輸入:
樣本資料t,包含m個n維特徵的樣本。
aij為每個樣本特徵的第i個特徵可取到的第j個值。
測試樣本x
輸出:對x的**分類。
p k(
y=ck
)=∑i
(y=c
k)
mp_k(y=c_k) = \frac
pk(y=
ck)
=m∑i
(y=c
k)
p ij
kp_
pijk為當為當
為當y =c
ky=c_k
y=ck時,x
第j個特
徵為
時,x第j個特徵為
時,x第j個
特徵為aij
a_ai
j的條件概率
p ij
k=∑i
(x(i
)=ai
j,y=
ck)∑
i(y=
ck
)p_ = \frac = a_, y=c_k)}
pijk=
∑i(y
=ck
)∑i(
x(i)
=aij
,y=
ck)
對所有c
kc_k
ck計算計算
計算p (x
=x∣y
=ck)
p(x=x|y=c_k)
p(x=x∣
y=ck
)p (x
=x∣y
=ck)
p(x=x|y=c_k)
p(x=x∣
y=ck
)為 當為當
為當y =c
ky=c_k
y=ck
時,x的每乙個特徵的條件概率的乘積。
p (x
=x∣y
=ck)
=∏p(
x(i)
=ai∣
y=ck
)p(x=x|y=c_k) = \prod p(x^=a_i|y=c_k)
p(x=x∣
y=ck
)=∏
p(x(
i)=a
i∣y
=ck)p(
y=ck
∣x=x
)=p(
x=x∣
y=ck
)p(y
=ck)
p(x=
x)
p(y=c_k|x=x) = \frac
p(y=ck
∣x=
x)=p
(x=x
)p(x
=x∣y
=ck
)p(y
=ck
)以上公式中分子所有需要的內容都在以前已經計算出,代入公式即可
不需要計算分母。因為最終要用到的不是後驗概率的具體數值,只是要比較大小。中所有c_k的後驗概率公式,分母都是相同的,不影響大小的比較,所以不用計算出來。
當x=x時所有c
kc_k
ck的後驗
概率中分
子取得最
大概率的
那的後驗概率中分子取得最大概率的那
的後驗概率中
分子取得
最大概率
的那c
kc_k
ck即x的分類
def
*****tebayes
(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 =
1for 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
貝葉斯估計與最大似然估計
極大似然估計 極大似然估計的基本想法是 我們所看到的,就是最可能發生的。所以通過最大化實驗資料發生的概率 p x 其中引數 是未知的 取極值時對應的 即為最大似然估計。貝葉斯估計p x p x p p x p 表示乙個事件發生的 概率,例如扔乙個硬幣的結果正面朝上的概率,這個 概率 是乙個隨機變數,...
bayes 貝葉斯估計與最大似然估計
參考 設資料為d,變數為x,決定概率分布的引數為 似然函式 p d 後驗概率分布 p d p d p constant 1.用mle方法只能估計出使得似然函式最大時的 值,而基於bayes的後驗概率法則可以求出 的後驗概率分布。若需要求得最優的 則可以用map來獲得。2.mle求出最優的引數 後帶回...
極大似然 樸素貝葉斯 EM演算法
1 寫出似然函式 聯合概率分布 2 似然函式處理 比如取對數 3 獲得似然方程 求導數,令導數 0 4 解似然方程,獲得模型引數。ps 回顧神經網路中loss function的定義,一般都是 log loss 形式的函式,實際上也是對訓練樣本進行了極大似然估計,只不過求解引數的方式不能是令導數 0...