Как преобразовать словарь переходов в матрицу переходов в цепочке марков? - PullRequest
0 голосов
/ 01 ноября 2019

Я хочу преобразовать словарь переходов в матрицу переходов в цепочке Маркова. У меня есть словарь, в котором значение каждого элемента указывает, куда я могу перейти из этого состояния (например, из 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)

1 Ответ

1 голос
/ 01 ноября 2019

Вот как вы преобразуете словарь в матрицу переходов:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...