Pyemma过渡矩阵返回意外大小的数组

时间:2019-04-30 12:33:54

标签: python markov-chains

我正在使用pyemma进行一些markov操作。具体来说,我想构建一个状态转换矩阵。在大多数情况下,解脓症可以正常工作,但是在某些情况下,过渡矩阵所表示的状态数量与数据中实际存在的状态数量不同。

例如:

import numpy as np
from pyemma import msm 

sequence = np.array([21, 21, 32 ,32 ,55 ,22 ,33 ,11 ,11 ,22 ,44 ,44 ,44 ,33 ,11 ,44 ,99])
vals = np.unique(sequence)
#note there are 8 unique states so we expect 8 by 8 transition matrix

model = msm.estimate_markov_model(sequence, 1)
transitionMatrix = model.transition_matrix
#transition matrix is 4 by 4 

为什么过渡矩阵不是8 x 8?

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您根据数据进行估算,PyEMMA将使用最大的连接状态子集进行估算。背景是,当未连接过渡矩阵时,例如,您不能为过渡矩阵提供唯一的度量。每个状态都可以从其他任何状态到达。

您可以通过查看生成的MSM对象来检查连接的状态:

print(msm.active_set)

产生一些与离散状态索引相对应的整数。