python - Pyemma 转换矩阵返回意外大小的数组
问题描述
我正在使用pyemma做一些马尔可夫操作。具体来说,我想建立一个状态转换矩阵。在大多数情况下,pyemma 工作正常,但在某些情况下,转换矩阵所表示的状态数与数据中实际存在的状态数不同。
例如:
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 乘 8?
提前致谢。
解决方案
如果你从数据中估计,PyEMMA 将使用最大的连接状态子集来进行估计。背景是,当转换矩阵未连接时,您无法为转换矩阵提供唯一的度量,例如,每个状态都可以从任何其他状态到达。
您可以通过查看生成的 MSM 对象来检查连接的状态:
打印(msm.active_set)
产生一些对应于离散状态索引的整数.
推荐阅读
- angular - NullInjectorError:没有 InjectionToken ToastConfig 的提供者!在 Angular + Electron 项目的茉莉花规范中
- python - 使用 Python 从不同的域 url 中抓取文本数据
- dataframe - 在 STATA 中为分类变量绘制条形图
- asp.net-core - 如何让 Route 属性在 .net core api 中工作?
- javascript - 从列表中获取对象的值
- powershell - 如何在 Powershell 中的 Copy-Item cmdlet 的文件路径中包含变量
- android - 如何检测android中的时间变化事件?
- git - 有 .gitnotice 文件吗?
- sql-server - 使用 flyway - 如何部署内存优化表
- amazon-web-services - 启用 IAM 角色设置以使用 Lake Formation 创建数据库和表