定义可能有误,所以如果是这样,请纠正我。我需要从以下类型的矩阵中生成Markov模型:
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。
回答通常的问题“你有什么尝试?”:“我尝试了一些方法,但他们没有完全实现,所以我希望其中一个答案有助于澄清一些事情。”
非常感谢。
编辑,更新以显示完整的矩阵。
答案 0 :(得分:1)
你没有给出一个过渡矩阵(这些是概率),而是一个由基础马尔可夫模型产生的观察到的过渡序列。
除非您拥有无限数量的这些观察结果,否则您无法准确地重建基础转换参数。但是,您可以选择转换,以便您的可观察序列是最可能的。如果我理解您的问题,您应该查看Hidden Markov Models的解决方案。可以找到一个免费的python模块GHMM here。
答案 1 :(得分:0)
这是一个想法:
尝试创建{"four":[{2:"two", 3:"one",2:"exit"},{...}],"three":[{...}]}
(注意内部字典中顺序的更改),而不是尝试创建{"four":[{"two":2, "one":3, "exit":2},{...}],"three":[{...}]}
(在python中不太合法)。
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.