【问题标题】:How can I convert a transition dictionary into a transition matrix in markov chain?如何将转换字典转换为马尔可夫链中的转换矩阵?
【发布时间】:2019-10-31 22:24:19
【问题描述】:

我想将转换字典转换为马尔科夫链中的转换矩阵。我有一本字典,其中每个元素的值都指示我可以从那个状态去哪里(例如,从 A 出发,我可以去 B 或 E)。我想把它转换成一个矩阵,每行代表从每个状态移动的概率。

dictionary = {'A': 'BE', 'B': 'AFC', 'C': 'BGD', 'D': 'CH', 'E': 'AF', 'F': 'EBG', 'G': 'FCH', 'H': 'GD'}

我的期望:

mat = [[0.5, 0, 0, 0, 0.5, 0, 0, 0] #state A
       [0.333, 0, 0.333, 0, 0, 0.333, 0, 0] #state B
       ... ] #untill state H (8X8 matrix)

【问题讨论】:

  • 您介意解释一下 mat 中的每个数字是如何计算的吗?我找不到逻辑。

标签: python numpy numpy-ndarray markov-chains


【解决方案1】:

以下是将字典转换为转换矩阵的方法:

import numpy as np


dictionary = {'A': 'BE', 'B': 'AFC', 'C': 'BGD', 'D': 'CH', 'E': 'AF', 'F': 'EBG', 'G': 'FCH', 'H': 'GD'}


letter_to_index = {letter: i for i, letter in enumerate(dictionary)}

n = len(dictionary)
mat = np.zeros((n, n))

for start, ends in dictionary.items():
    for end in ends:
        mat[letter_to_index[start],
            letter_to_index[end]] += 1./len(ends)

但是,您给出的预期结果值似乎不正确:第一个状态 (A) 的概率总和不等于 1,并且与 dictionary 中给出的概率不同。

【讨论】:

    猜你喜欢
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多