Advertisement
Guest User

Untitled

a guest
Apr 1st, 2020
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.01 KB | None | 0 0
  1. def viterbi(hmm,observaciones):
  2.     nu_list_list = []
  3.     pr_list = []
  4.     s = []
  5.     #Calculo nu en la primera it
  6.     nu_list=[hmm.b[(e,observaciones[0])]*hmm.pi[e] for e in hmm.estados]
  7.     nu_list_list.append(nu_list)
  8.     #Recorro las observaciones
  9.     for o in observaciones[1:]:
  10.         #Calculo los pr en cada it
  11.         pr = [[nu*hmm.a[(e1,e)] for (e1,nu) in zip(hmm.estados,nu_list)] for e in hmm.estados]
  12.         pr_e = []
  13.         #Calculo el estado que tiene la mayor prob en cada pr(si)
  14.         pr_e = [hmm.estados[pr[i].index(max(pr[i]))]for i in range(len(pr))]
  15.         pr_list.append(pr_e)
  16.         #Calculo nu(si)
  17.         nu_list = [hmm.b[(e,o)] * max(nu * hmm.a[(e1,e)] for (nu,e1) in zip(nu_list,hmm.estados)) for e in hmm.estados]
  18.         nu_list_list.append(nu_list)
  19.     #Recorro la lista con las prob de cada estado
  20.     for i in range(len(nu_list_list)):
  21.         #รndice de mayor prob
  22.         nu_e = [nu_list_list[i].index(max(nu_list_list[i]))]
  23.         s.append(nu_e)
  24.  
  25.     return pr_list
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement