问题描述
def viterbi(hmm,obs):
# initialize empty Matrix
V = []
B = []
N = len(hmm.states)
T = len(obs)
#initialize
for q in range(1,N-1):
V[q][1] = (hmm.trans_prob[0][q] * hmm.obs_likelihood[q][1])
B[q][1] = 0
#get probability for each state
for t in range(2,T):
for q in range(1,N-1):
V[q][t] = V[q][t-1] * hmm.trans_prob[q][q] * hmm.obs_likelihood[q][t]
B[q][t] = V[q][t-1].argmax() * hmm.trans_prob[q][q] * hmm.obs_likelihood[q][t]
bestpathprob = max(V[N-1][T])
bestpathpointer = V[N-1][T].argmax()
return bestpathpointer
如何为Viterbi函数实现回溯?回溯需要获得viterbi [(从1到N)] [T]
的最大值
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)