Я хочу вычислить вероятность нескольких последовательностей в цепи Маркова. Я подготовил цепь Маркова, но я не уверен, как легко рассчитать вероятности определенной последовательности.
Мой кадр данных pandas с A-E слева как индекс и A-E сверху как столбцы называется Марков, выглядит следующим образом:
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.
Мне удалось использовать функцию .at панд:
markov.at[sequence[0], sequence[1]] * markov.at[sequence[1], sequence[2]].
Однако я хотел бы построить функцию, которая, когда я передаю ей таблицу последовательностей в каждой строке, которые различаются по длине, вычисляет вероятности соответствующих последовательностей. В моем подходе я должен вручную изменять код каждый раз, когда я хочу проверить определенную последовательность.
Как я мог этого достичь? Я пропускаю строительную особенность панд, чтобы выполнить такие вычисления?