簡體   English   中英

馬爾可夫鏈概率計算-Python

[英]Markov chain probability calculation - Python

我有一個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..etc。

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:])))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM