【问题标题】:Markov chain probability calculation - Python马尔可夫链概率计算 - Python
【发布时间】:2014-10-06 14:11:29
【问题描述】:

我有一个 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')]

【问题讨论】:

  • 这里的问题到底是什么?您已经知道如何获取字典的键列表,您还在坚持什么?这不是代码编写服务;请准确说明问题所在。

标签: python markov-chains


【解决方案1】:

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

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

【讨论】:

  • 我被困在乘以字典中的概率。非常感谢!
猜你喜欢
  • 2023-03-31
  • 1970-01-01
  • 2019-02-07
  • 1970-01-01
  • 2018-03-24
  • 2022-01-24
  • 1970-01-01
  • 2021-07-14
  • 1970-01-01
相关资源
最近更新 更多