首页 > 解决方案 > 用 Python 构造图的马尔可夫转移率矩阵

问题描述

我有一个关于在 Python 中构造转换率矩阵的问题,我有一个字典中描述的转换图:

    graph={((), ('a',)): [ 0.0],
           (('a',), ('b',)): [78.71428571428571],
           (('a',), ('c',)): [18.142857142857142],
           (('a',), ('d',)): [132.66666666666666],
           (('a',), ('e',)): [64.0],
           (('b',), ('a',)): [215.1139240506329],
           (('b',), ('c',)): [13.26923076923077],
           (('b',), ('d',)): [10.333333333333334],
           (('c',), ('a',)): [60.333333333333336],
           (('c',), ('b',)): [181.31034482758622],
           (('c',), ('d',)): [507.0],
           (('d',), ('a',)): [56.0],
           (('d',), ('b',)): [968.0],
           (('e',), ('a',)): [860.0]}

转换率矩阵图

正如您在字典图中看到的那样,键说明了转换,值是连续时间马尔可夫链在状态之间移动的速率。例如,从“a”移动到“b”,速率为 78.71428571428571,以此类推。转换率矩阵的一个简单示例,便于理解:

    graph = {(('a',), ('b',)): 78.71428571428571, 
             (('a'), ('c',)): 18.142857142857142,
             (('c',), ('b',)): 181.31034482758622}
    #the corresponding matrix for this sample graph:
    q_matrix = np.asmatrix([[-96.85714285714285, 78.71428571428571,   18.142857142857142], 
    [0, 0, 0], 
    [0, 181.31034482758622, -181.31034482758622]])

我试图为这个问题建立一个矩阵:

    M = [[0]*5 for _ in range(5)]

但是 M 中的索引与图中的转换不匹配,有什么帮助吗?谢谢

标签: pythondictionarytransition

解决方案


推荐阅读