【发布时间】:2019-06-17 14:03:00
【问题描述】:
我想计算马尔可夫链中几个序列的概率。我准备好了马尔可夫链,但我不确定如何轻松计算特定的序列概率。
我的 pandas 数据框,左侧为 A-E 作为索引,顶部为 A-E 作为列,称为 Markov,如下所示:
A B C D E
A 0.3 0.2 0.5 0.0 0.2
B 0.2 0.4 0 0 0.4
C 0.5 0.4 0 0.1 0
D 0.2 0.2 0.2 0.2 0.2
E 0.6 0.1 0.1 0.1 0.1
假设我要检查称为序列的序列的概率:['A', 'C', 'D']。这意味着从 A 到 C,从 C 到 D 的转换。结果应该是 0.05。
我成功使用了 pandas .at 函数:
markov.at[sequence[0], sequence[1]] * markov.at[sequence[1], sequence[2]].
但是,我想构建一个函数,当我将每行长度不同的序列表交给它时,它会计算相应的序列概率。在我的方法中,每次要检查特定序列时,我都必须手动更改代码。
我怎样才能做到这一点?我是否忽略了 pandas 的构建功能来执行此类计算?
【问题讨论】:
标签: python pandas markov-chains