首先,我知道矩阵和数组是 NumPy 中两种不同的数据类型。但我把这两个问题都放在标题中,使其成为一个一般性问题。如果您正在编辑此问题,请随时删除一个问题。好的,这是我的问题,
这是对原始问题的编辑。考虑具有二维状态向量 x_t=(y_t,z_t) 的马尔可夫链,其中 y_t 和 z_t 都是标量。表示/存储/操作该马尔可夫链转移矩阵的最佳方式是什么?
现在,我解释的是我的问题的简化版本。我的马尔可夫链状态向量是一个 5*1 向量。 希望这能澄清
最佳答案
假设您正在尝试使用马尔可夫链来模拟英语句子语法。您的转换矩阵将为您提供从一种词性转到另一种词性的概率。现在假设我们使用三阶马尔可夫模型。这将给出从状态 123
到 23X
的概率,其中 X 是有效状态。
马尔可夫转移矩阵将为 N<sup>3 x N,无论状态本身的维数如何,它仍然是一个二维矩阵。如果您根据经验证据生成概率分布,那么在这种情况下,将会出现概率为 0 的状态。
如果您担心稀疏性,也许数组不是最好的选择。也许您应该使用字典的字典,而不是使用数组的数组。或者,如果您有许多转换矩阵,则可以是字典的字典数组。
编辑(基于评论):
你是对的,这更复杂。尽管如此,对于任何状态 (i,j)
,都存在进入下一个状态 (m,n)
的概率分布。因此,我们有了“外部”字典,其键是所有可能的状态。每个键(状态)都指向一个字典形式的值,该字典保存该状态的概率分布。
关于python - Python 中多维矩阵(数组)的乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17416448/