Как создать определенный алгоритм Витерби в Python для домашнего задания? - PullRequest
1 голос
/ 07 мая 2019

Итак, в основном для этой домашней работы мы пытаемся использовать алгоритм Витерби для решения скрытой марковской модели, я пытался основывать свою на других, которых я нашел в Интернете, но, получив подсказку от учителя, я обдумываю это.Я действительно хорош в математической части и понимаю, как сделать задачу на бумаге. Я просто ужасен в переводе ее на python.

Ниже приведен код, который у меня есть, так что он помог мне своими подсказками,Я не уверен, что следующий шаг.

    import numpy as np

    def viterbi(obs):
        tmatr = np.array([[numpy.log2(0.7), 
                numpy.log2(0.2),numpy.log2(0.1)], 
                [numpy.log2(0.2), numpy.log2(0.5), numpy.log2(0.3)],[ 
                numpy.log2(0.1), 
                numpy.log2(0.3), numpy.log2(0.6)])
        omatr = np.array([[ numpy.log2(0.8), numpy.log2(0.2), 
                numpy.log2(0.0)],[ numpy.log2(0.2), numpy.log2(0.7), 
                numpy.log2(0.1)], 
                [numpy.log2(0.2), numpy.log2(0.5), numpy.log2(0.3)])

        pathdict={
        0: numpy.log2(.7),
        1: numpy.log2(.2),
        2: numpy.log2(.1),
        }

        probdict={
        0: (numpy.log2(.7)+ omatr[0,obs_seq[0]]),
        1: (numpy.log2(.2)+ omatr[1,obs_seq[0]]),
        2: (numpy.log2(.1)+ omatr[2,obs_seq[0]]),
        }

        templist=[]

        for t in range(1, 63):
             for i in range(0,2):
                 for k in range(0,2):
                    templist.append(pathdict[k,i]+
...