2012-04-16 3 views
0

определение может быть неправильно, поэтому, пожалуйста, поправьте меня, если это так .. Мне нужно создать модель Маркова из матрицы следующего вида:Создание модели Маркова с матрицей

four two "e"   
four two "e"   
three three "e"   
one three "e"   
zero six one zero "e" 
two two "e"   
two two "e"   
two two "e"   
two two "e"   
two two "e"   
four zero "e"   
two two "e"   
three one three "e"  
three "e"    
four one "e"   
three one "e"   
two one one zero two "e" 
two five "e"   
three four two "e"  
zero five "e"   
three "e"    
three three "e"   
three "e"    
one one "e"   
three two "e"   
one one "e"   
three two zero zero zero "e" 
three three "e"   
three one "e"   
three two "e"   

мне нужно вывод должен выглядеть примерно так: {"four": [{2: "two", 3: "one", 2: "exit"}, {...}], "three": [{...} ]}

число выше, в основном, сколько раз происходит переход к конкретному состоянию бывает ..

Я использую Python для этого.

Ответ на обычный вопрос: «Что вы пробовали?»: «Я попробовал пару для подходов, но они не совсем доставлялись, поэтому я надеюсь, что один из ответов поможет немного прояснить ситуацию».

Большое спасибо.

EDIT, обновленный, чтобы отобразить полную матрицу.

+1

Можете ли вы представить полный OP из вашей входной матрицы? Вы объяснение не очень ясно – Abhijit

+0

добавлена ​​полная матрица – Stpn

+0

Каково физическое значение строки, например: 'три четыре два" e "'? Является ли это особой реализацией из основной марковской цепи, идущей от состояний «3-> 4-> 2', а затем заканчивается? – Hooked

ответ

1

Вы не дали матрицу переходов (это было бы вероятность), а последовательность наблюдаемых переходов, которые являются результатом нижележащей модели Маркова.

Если у вас нет бесконечного числа этих наблюдений, то вы не можете точно воссоздать базовые параметры перехода. Вы можете, однако, выбрать переходы, чтобы ваша последовательность наблюдаемых была , скорее всего,. Если я понимаю ваш вопрос, вы должны изучить решения Hidden Markov Models. Свободно доступный модуль python GHMM можно найти here.

+0

спасибо, похоже, что GHMM может действительно выполнить эту работу. – Stpn

0

Вот идея: Вместо того, чтобы пытаться создать {"four":[{2:"two", 3:"one",2:"exit"},{...}],"three":[{...}]} (который не является вполне законным в питоне), попробуйте создать {"four":[{"two":2, "one":3, "exit":2},{...}],"three":[{...}]} (обратите внимание на изменение порядка во внутреннем словаре).

Iterate over the matrix, for each line: 
    if the first word isn't in the big dictionary, add it. 
    if the second word isn't in its sub-dictionary, add it, otherwise add 1 to its value.