问题标签 [hidden-markov-models]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
158 浏览

algorithm - 为什么前向后向算法中的先验状态向量不是特征值为1的转移矩阵的特征向量?

维基百科说您不知道第一个状态是什么,因此您必须在先前状态向量中为每个状态分配相等的概率。但是您确实知道转移概率矩阵是什么,并且该矩阵的特征值为 1 的特征向量是 HMM 中每个状态的频率(我认为),那么您为什么不先使用该向量而是状态向量?

0 投票
1 回答
2066 浏览

r - 从 HMM 高斯混合分布中获取下一个观测值

我有一个长度为 1000 的连续单变量 xts 对象,我已将其转换为名为 x 的 data.frame 以供 package 使用RHmm

我已经选择了混合分布中有 5 个状态和 4 个高斯分布。

我所追求的是下一次观察的预期平均值。我该怎么做呢?

所以我到目前为止是:

  1. HMMFit()运行函数的转移矩阵
  2. 混合物中每个高斯分布的一组均值和方差,以及它们各自的比例,所有这些也是由HMMFit()函数生成的
  3. 使用 HMMFit 函数的输出并将其放入viterbi函数时与输入数据相关的过去隐藏状态列表

我将如何从我所拥有的中获取下一个隐藏状态(即第 1001 个值),然后使用它从高斯分布中获取加权平均值。

我想我已经很接近了,只是不太确定下一部分是什么……最后一个状态是状态 5,我是否以某种方式使用转换矩阵中的第 5 行来获得下一个状态?

我所追求的只是下一次观察中预期的加权平均值,因此甚至不需要下一个隐藏状态。我是否将第 5 行中的概率乘以每个平均值,加权到每个州的比例?然后把它们加在一起?

这是我使用的代码。

一如既往,任何帮助将不胜感激!

0 投票
2 回答
584 浏览

machine-learning - 使用矩阵(NxN)观察创建离散隐马尔可夫模型?

在我见过的所有离散 HMM 中,观察数据都由整数流组成。但是,如果观察结果实际上是离散的特征向量会发生什么?例如,如果我尝试使用 HMM 来学习视频帧灰度强度值的手势识别,该怎么办?也就是说,每个观察都由一个 nxn 矩阵描述,而不是单个值?我该怎么做呢?

谢谢!

0 投票
1 回答
351 浏览

android - 如何知道一个jar文件是否可以在Android上运行?

我问这个是因为我想在 android 应用程序中使用这个隐马尔可夫模型分类器。该库不使用任何图形用户界面,所以我猜我可以这样使用吗?

如何知道哪些罐子我们可以,哪些不能在 android 上?

0 投票
0 回答
279 浏览

python - 带有 pythons libghmm 库的 ImportError

我已按照安装说明安装 GHMM 库。但是,我仍然收到以下错误:

我试图将我的LD_PRELOAD_PATH变量更改/usr/local/lib为无济于事。

此外,当我尝试定位 libghmm 时,我得到以下信息,因此这些库肯定存在:

有任何想法吗?

0 投票
0 回答
389 浏览

python - 可能的 GHMM 扩展

我真的很喜欢玩GHMM库。我想知道是否有任何方法可以使用矩阵参数定义自定义排放分布。具体来说,我希望执行以下操作:

我想使用ghmm.MultivariateGaussianDistribution设置的修改版本。但是,我希望将分布约束为具有零的多元正态分布,而不是允许具有完整协方差矩阵的多元正态分布,其中每个分布状态具有 n^2 + n 个参数(n 是排放变量的维度)非对角参数(即每个排放变量独立于其他变量,但根据状态 i 将它们绘制在一起)。因此,每个状态的参数减少到 2n。这应该真正改善对角方差项的估计,这是最重要的,在没有太多数据点可以使用的情况下。

任何关于在哪里修改代码的指导将不胜感激。

0 投票
1 回答
3186 浏览

c++ - 动态手势的隐马尔可夫模型训练?

我知道有很多与隐藏马尔可夫模型相关的材料,并且我还阅读了与该主题相关的所有问题和答案。我了解它的工作原理以及如何对其进行训练,但是我无法解决在尝试对其进行简单动态手势训练时遇到的以下问题。

我正在为 OpenCV 使用 HMM 实现, 我已经查看了以前提出的问题并在此处回答。这确实帮助我理解和使用马尔可夫模型。

我总共有两个动态手势,它们都是对称的(向左滑动和向右滑动)总共有 5 个观察结果,其中 4 个是手势的不同阶段,第 5 个是没有这些阶段发生时的观察。

向左滑动手势由以下观察组成:1->2->3->4(应该触发向左滑动状态) 同样向右滑动手势由以下观察组成:4->3->2->1

我有 25 个序列。我对每个序列进行 20 次观察,用于使用 Baum-Welch 算法训练隐马尔可夫模型。

以下是输入序列:

在此序列中,您可以看到向左滑动和向右滑动手势的模式。

为了训练隐藏马尔可夫模型,我使用以下值对其进行初始化,然后调用 train 函数以获取输出:

训练后的输出是:

在我的识别程序中使用这个模型,我没有得到结果。我希望系统保持在 NULL 状态,除非检测到其中一个手势。在转换和发射矩阵中,我给出了这两个手势的猜测值。

你觉得我可能做错了什么?任何指示或帮助?

最后这里是我用来做这个的代码(如果有人想看看)

这里 fin 用于读取我从其他代码中获得的观察结果。

0 投票
1 回答
5464 浏览

c++ - C++ 中的隐马尔可夫模型

我一直在研究在 linux 环境中使用 Opencv 的活动识别问题。我达到了符号序列(使用k-means聚类)。现在我想使用 C++ 中的隐马尔可夫模型来训练这些不同活动的序列。但我不知道从哪里开始?我浏览了这段代码,但没有找到如何给出不同的序列并获得训练好的模型?

对此的任何帮助将不胜感激。

0 投票
2 回答
2981 浏览

matlab - Matlab隐马尔可夫模型数据预测

我是隐马尔可夫模型 (HMM) 的新手,我现在正在尝试使用它进行数据预测。考虑一个以非均匀间隔采样的正弦波,我想使用这些数据来预测未来时刻的输出。我正在尝试将统计工具箱与 matlab 一起使用。

问题似乎是在给出的示例中,我需要一个发射矩阵和一个转换矩阵来生成一个 hmm 模型。但是仅基于我拥有的数据,我如何评估这些矩阵?以及如何根据我拥有的数据训练模型?

0 投票
1 回答
534 浏览

python - GHMM - 在 NULL 指针上尝试 m_free

我正在尝试在带有 Python 2.7 的 mac osx 上使用 ghmm python 模块。我已经成功安装了所有东西,我可以在 python 环境中导入 ghmm,但是当我运行它时出现错误(来自 ghmm 'tutorial')(UnfairCasino 可以在这里找到http://ghmm.sourceforge.net /UnfairCasino.py):

具体来说,我收到此错误:

GHMM ghmm.py:148 - sequence.c:ghmm_dseq_free(1199):在 NULL 指针上尝试 m_free。糟糕的程序,糟糕!没有饼干给你。python(52313,0x7fff70940cc0) malloc: * 对象 0x74706d6574744120 的错误:未分配被释放的指针 *在 malloc_error_break 中设置断点以调试 Abort 陷阱

当我将 ghmm.py 记录器设置为“DEBUG”时,日志会在之前打印出以下内容:

GHMM ghmm.py:2333 - HMM.viterbi() -- 开始

GHMM ghmm.py:849 - EmissionSequence.asSequenceSet() -- 开始 >

GHMM ghmm.py:862 - EmissionSequence.asSequenceSet() -- 结束 >

回溯(最近一次通话最后):

文件“/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init .py ”,第 842 行,在发出

msg = self.format(记录)

文件“/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init .py ”,第 719 行,格式为

返回 fmt.format(记录)

文件“/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init .py ”,第 464 行,格式

记录.消息 = 记录.getMessage()

文件“/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init .py ”,第 328 行,在 getMessage

味精 = 味精 % self.args

TypeError:字符串格式化期间并非所有参数都转换了

从文件 ghmm.py 第 1159 行记录

回溯(最近一次通话最后):

文件“/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init .py ”,第 842 行,在发出

msg = self.format(记录)

文件“/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init .py ”,第 719 行,格式为

返回 fmt.format(记录)

文件“/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init .py ”,第 464 行,格式

记录.消息 = 记录.getMessage()

文件“/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init .py ”,第 328 行,在 getMessage

味精 = 味精 % self.args

TypeError:字符串格式化期间并非所有参数都转换了

从文件 ghmm.py 第 949 行记录

GHMM ghmm.py:2354 - HMM.viterbi() -- 结束

GHMM ghmm.py:1167 -删除序列子集 >

所以我怀疑这与 Viterbi 函数完成后删除序列的方式有关,但我不确定这是否意味着我需要修改 Python 代码、C 代码,或者我是否需要编译 ghmm 和包装不同。任何帮助/建议将不胜感激,因为我在过去 4 天一直试图让这个库正常工作。