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