一、hmm相關概念
二、前向傳導
[python]view plain
copy
#coding=utf-8
import
numpy as np
#前向傳導演算法
defforward(a,b,pi,o):
n=o.shape[0
] m=a.shape[0
] dis2src=np.zeros((n,m),dtype=np.float32)#dis2src(i,j)用於保留第i層頂點j出現的概率
dis2src[0
,:]=pi*(b[:,o[
0]])
#初始化第一層各個頂點與觀測t=0的聯合概率
fort
inrange(n-
1):
t=t+1
fori
inrange(m):
predis=dis2src[t-1
,:]
#第t時刻的所有頂點,到t+1時刻頂點i的距離總和,然後再計算i頂點到觀測變數o[t]的距離
dis2src[t,i]=np.sum(predis*a[:,i])*b[i,o[t]]
sum(dis2src[t])
a=np.asarray([0.5
,0.2
,0.3
,0.3
,0.5
,0.2
,0.2
,0.3
,0.5
]).reshape(3,
3)
b=np.asarray([0.5
,0.5
,0.4
,0.6
,0.7
,0.3
]).reshape(3,
2)
pi=np.asarray([0.2
,0.4
,0.4
])
o=np.asarray([0,1
,0])
forward(a,b,pi,o)
三、維位元演算法實踐
[python]view plain
copy
#coding=utf-8
import
numpy as np
#a為狀態轉移矩陣,b為觀測矩陣,pi為初始狀態概率,o為觀測序列
#函式的目標就是返回0所對應的,狀態序列
defviterbi(a,b,pi,o):
n=o.shape[0
] m=a.shape[0
] dis2src=np.zeros((n,m),dtype=np.float32)#dis2src(i,j)用於保留第i層頂點j,到原點的最大距離
path=np.zeros((n,m),dtype=np.int)
t=0;
dis2src[t,:]=pi*(b[:,o[t]])#初始化第一層頂點到原點的距離
fort
inrange(n-
1):
t=t+1
fori
inrange(m):
predis=dis2src[t-1
,:]
#第t時刻的所有頂點,到t+1時刻頂點i的距離
node_i2src=predis*a[:,i]
dis2src[t,i]=np.max(node_i2src)*b[i,o[t]]
path[t,i]=np.argmax(node_i2src);#計算頂點i對應到上一時刻的頂點的最大路徑
bestpaht=-1
*np.ones(n,dtype=np.int)
bestpaht[n-1
]=(np.argmax(dis2src[n-
1,:]))
np.log(np.max(dis2src[n-
1,:]))
#回溯for
t in
range(n-
1)[::-
1]:
ti=path[t+1
,bestpaht[t+
1]]
bestpaht[t]=ti
(bestpaht+
1)
a=np.asarray([0.333
,0.333
,0.333
,0.333
,0.333
,0.333
,0.333
,0.333
,0.333
]).reshape(3,
3)
b=np.asarray([0.5
,0.5
,0.75
,0.25
,0.25
,0.75
]).reshape(3,
2)
pi=np.asarray([0.333
,0.333
,0.333
])
o=np.asarray([0,0
,0,0
,1,0
,1,1
,1,1
])
viterbi(a,b,pi,o)
馬爾科夫模型與隱馬爾科夫模型
隨機過程 是隨時間而隨機變化的過程。又稱為隨機函式。馬爾科夫模型 vmm 它描述了一類重要的隨機過程。乙個系統有有限個狀態集s 隨時間推移,該系統將同某一狀態轉移到另一狀態。q s1,s2,sn 為一隨機變數序列,隨機變數取值為狀態集s中的乙個狀態,設時間t時狀態為qt。對系統的描述通常是給出當前時...
馬爾科夫模型(未完)
馬爾科夫模型 不考慮動作 考慮動作狀態完全可見 馬爾科夫鏈 mc 馬爾可夫決策過程 mdp 狀態不完全可見 隱馬爾可夫模型 hmm 不完全可觀察馬爾可夫決策過程 pomdp 馬爾科夫鏈 狀態空間中經過從乙個狀態到另乙個狀態的轉換的隨機過程。該過程要求具備 無記憶 的性質 下一狀態的概率分布只能由當前...
隱馬爾科夫模型
隱馬爾科夫 hiddenmarkov model 簡稱為hmm,hmm資料相當豐富,推薦參見 hmm學習最佳範例與崔曉源的部落格 一文,本文只對hmm進行簡要介紹,然後說明開源ghmm實現在linux環境的搭建,hmm的開源實現有眾多不同語言的實現。馬爾科夫模型 一階馬爾科夫模型假設為 1 t l時...