python - 有限 HMM 及其 Digamma 矩阵
问题描述
我已经开始学习我的教科书 3 天以及补充的 Matlab 代码,我根本不了解当转换矩阵具有退出状态时 Gamma 矩阵的外观。
通常,digamma 会有 t-1 个元素,每个元素都是转换矩阵维度的矩阵(对吗?Digamma_t_ij)......所以,假设我的玩具示例是
A = [[0.9, 0.1, 0.0],
[0.0, 0.9, 0.1]]
x = [-0.2, 2.6, 1.3]
状态 1 和 2 的排放概率由高斯分布建模。我暂时不考虑 r ,即几个序列。
在我看来,digamma 应该具有np.zeros((sequence_length, self.nStates, len(self.nStates + 1 )))
+1 表示退出状态的形状......
虽然,这是我教科书中的一个尝试:
“因此,我们用一个额外的列来补充 ξr 矩阵”,如何......什么......我觉得很愚蠢:(
这就是我得到的atm
Digamma
array([[[0.06495786, 0.93504214, 0. ],
[0. , 0. , 0. ]],
[[0. , 0.06495786, 0. ],
[0. , 0.93504214, 0. ]],
[[0. , 0. , 0. ],
[0. , 0. , 0. ]]])
我猜前两个元素是正确的,因为每个矩阵中的值加起来为 1,因此更改它们的结束列似乎是错误的......但填充最后一个矩阵似乎也不正确?
我将添加计算 digamma 所需的所有变量,以防有人可以向我解释这一点并且不想提出一个玩具示例:
# a_pass from the Forward Algorithm
a_pass = array([[1. , 0.38470424, 0.41887466],
[0. , 0.61529576, 0.58112534]])
# b_pass from the Backward Algorithm
b_pass = array([[1. , 1.03893571, 0. ],
[8.41537925, 9.35042138, 2.08182773]])
# scale variables derived from Forward
c_scale = array([1. , 0.16252347, 0.82658096, 0.05811253])
# Transition matrix
A = array([[0.9, 0.1, 0. ],
[0. , 0.9, 0.1]])
# Emission matrix, calculated as getting the pdf for each x given a gaussian dist
B = array([[1. , 0.06947052, 1. ],
[0.14182701, 1. , 0.81107303]])
# Observation sequence
x = [-0.2, 2.6, 1.3]
# The normalised gamma
gamma = array([[1. , 0.06495786, 0. ],
[0. , 0.93504214, 1. ]])
解决方案
推荐阅读
- javascript - 计数输入数 onchange
- python - 如何将 Python 转义字符与 MatLab 命令结合起来?
- algorithm - 整数到字符的转换
- ajax - 有没有人在没有捆绑包的情况下在 Symfony 4 中使用 Select2 + ajax?
- r-markdown - rmarkdown::render() 无法生成 pdf,但 rstudio 'knitr' 按钮有效
- dockerhub - 由于访问被拒绝,无人机推送到 Dockerhub 失败
- python - 括号对方法和“自我”变量的影响
- sql-server - SQL Server 2017 中不存在登录名和用户,那么为什么在 T-SQL 中会出现?
- azure - 内部应用服务环境中其他应用的名称解析
- android - 错误:无法解决:androidx.legacy:legacy-support-v4