Pandas从Markov链d计算序列的概率

2024-05-16 11:26:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想计算马尔可夫链中几个序列的概率。我准备好了马尔可夫链,但我不知道如何容易地计算特定序列的概率。在

我的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

假设我要检查序列的概率,称为sequence:['A','C','D']。这意味着A到C,C到D的转变,结果应该是0.05。在

我成功地使用了熊猫。功能:

^{pr2}$

但是,我想构建一个函数,当我把每一行的序列表交给它时,它会计算出相应的序列概率。在我的方法中,每次要检查特定序列时,我都必须手动更改代码。在

我怎么能做到这一点?我是不是在俯瞰熊猫的建筑特征来进行这样的计算?在


Tags: 数据方法函数代码功能pandas序列特征
1条回答
网友
1楼 · 发布于 2024-05-16 11:26:08

您可以定义如下函数:

def get_prob(*args):
    ret = 1
    for i, j in zip(args, args[1:]):
        ret *= markov.at[i,j]

    return ret

然后打电话:

^{pr2}$

或者您可以:

^{3}$

所以您可以传递一个字符串(或一个列表):

get_prob2('ACDE')
# 0.010000000000000002

相关问题 更多 >