Python 维特比回溯
如何实现Viterbi函数的回溯?回溯需要获得维特比的最大值[(从1到N)][T]Python 维特比回溯,python,viterbi,Python,Viterbi,如何实现Viterbi函数的回溯?回溯需要获得维特比的最大值[(从1到N)][T] 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.
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