马尔可夫链概率计算-Python

马尔可夫链概率计算-Python,python,markov-chains,Python,Markov Chains,我有一个Python字典,里面有马尔可夫链模型的状态转移概率 dict_m = {('E', 'F'): 0.29032258064516131, ('D', 'F'): 0.39726027397260272, ('D', 'D'): 0.30136986301369861, ('E', 'D'): 0.32258064516129031, ('E', 'E'): 0.38709677419354838, ('D', 'E'): 0.30136986301369861, ('F', 'F'):

我有一个Python字典,里面有马尔可夫链模型的状态转移概率

dict_m = {('E', 'F'): 0.29032258064516131, ('D', 'F'): 0.39726027397260272, ('D', 'D'): 0.30136986301369861, ('E', 'D'): 0.32258064516129031, ('E', 'E'): 0.38709677419354838, ('D', 'E'): 0.30136986301369861, ('F', 'F'): 0.68152866242038213, ('F', 'E'): 0.10191082802547771, ('F', 'D'): 0.19108280254777071, ('F', 'H'): 0.025477707006369428, ('H', 'F'): 1.0}
假设我有一个如下所示的数据序列。状态转换是从D到E、E到F、F到E等

s = ['D','E','F','E','E','F','H','F']
现在我需要通过乘以dict_m中的概率来计算概率值。在这种情况下,所有状态转换的概率为

probability = 0.301370*0.290323*0.101911*0.387097*0.290323*0.025478*1.000000
谁能帮我解释一下

print zip(s,s[1:])
[('D', 'E'), ('E', 'F'), ('F', 'E'), ('E', 'E'), ('E', 'F'), ('F', 'H'), ('H', 'F')]

您必须使用zip中的元组对字典进行索引,然后将所有数字相乘

from operator import mul
print reduce(mul, (dict_m[t] for t in zip(s, s[1:])))

这里的问题到底是什么?你已经知道了如何为你的字典获取键列表,你在坚持什么?这不是一个代码编写服务;请确切地说明问题是什么。我一直在字典里把概率相乘。非常感谢!。