从矩阵乘法的角度理解马氏链

MrD*_*Duk 2 python numpy probability markov-chains

YouTube的一次讲座中,一位教授说Markov Chains可以简化为Start(S) * Transition Matrix(Q)^State#

我试图用numpy来复制它.

import numpy as np
S = np.zeros(shape=(1,2))
Q = np.zeros(shape=(2,2))

#starting state
S[0] = [.2,.8]

#transition matrix
Q[0] = [.9, .1]
Q[1] = [.7, .3]
Run Code Online (Sandbox Code Playgroud)

如果我这样做print S.dot(Q).dot(Q),它给了我[[0.848 0.152]]似乎是正确的答案(未来的两个步骤).

然而,这看起来并不完全相同SQ^x,所以我试过print S.dot(np.power(Q,2)),但这给了我[[0.554 0.074]].我哪里出错了,或者我在这里不懂什么?

Mat*_*ttG 7

表达S.dot(Q).dot(Q)S.dot(np.power(Q,2))不一样的东西.第一个是你想要的行为,同时S.dot(np.power(Q,2))将每个元素提升Q到第二个力量.文档在这里.

对于比重复链接更紧凑的表示法.dot(Q),请使用:

S.dot(np.linalg.matrix_power(Q,n))
Run Code Online (Sandbox Code Playgroud)

在哪里n是所需的力量.