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