问题标签 [hmmlearn]

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 回答
354 浏览

python - HMMlearn 库 - 遍历和从左到右的拓扑

我已经使用 HMMlearn 库来执行手势识别,并且在某些手势中我想使用遍历拓扑,而在其他的从左到右的拓扑中。HMM 架构内的拓扑是否由“协方差”参数设置为“完整”或“诊断”或我需要定义其他内容?

0 投票
0 回答
132 浏览

python - 当数据既连续又离散时,如何使用 hmmlearn 处理(半)隐马尔可夫模型?

我想在预测性维护数据上应用(半)隐马尔可夫模型。我的数据由连续变量(电压、振动、自上次维修以来的天数等)和离散(和分类)变量(错误计数、机器类型、组件类型等)组成。我想做一个多类分类,它会预测是否有故障,如果有故障,哪个组件会发生故障(四种类型的组件)。半隐藏马尔可夫模型应该工作得最好,因为它们考虑了状态持续时间的分布,但是,我在 Python 中找不到一个很好的半隐藏马尔可夫模型包,它也允许多个观察序列。据我所知,hsmmlearn 只能处理一个观察序列。有谁知道我是否可以在这个包中使用多个观察序列,

此外,我不确定如何处理我拥有连续、离散和分类数据的事实。Hmmlearn 能够处理多个观察序列,但您只能指示一种类型的发射分布,例如具有高斯发射(连续)的 GaussianHMM 或具有多项(离散)发射的 MultinomialHMM,但不能指示这些分布的组合。

如果您可以帮助我,请告诉我是否需要更多信息!

提前感谢并保持安全!

0 投票
0 回答
730 浏览

python - python (hmmlearn) 中的隐马尔可夫模型 (HMM) 总是预测时间序列的相同值

我一直在尝试使用 python 中的hmmlearn 包来构建一个预测时间序列值的模型。我的代码基于这篇文章,详细说明了如何将包用于股票价格时间序列。

在将模型拟合到大部分时间序列数据并尝试为其余部分构建预测模型后,我遇到了一个问题。该模型总是预测与最可能的结果相同的结果- hmm.score 为测试系列中的每个实例返回相同结果的最高对数似然。此外,它预测的结果是最接近它所拟合的时间序列平均值的结果。它从不偏离。我真的不知道该怎么办。模型有缺陷,还是我做错了什么?

执行预测的代码如下。它将所有可能的结果(定义如下)附加到时间序列中的一系列测试点(测试数据集中的最后 100 个)并评估可能性(使用 hmm.score):

我不知道问题出在上述问题上,还是与数据的实际创建和模型本身的拟合有关。这简单地完成如下:

我意识到如果没有实际的时间序列,大部分内容都是毫无意义的,我不允许分享 - 尽管如果有人过去遇到过类似的问题,我很想听听你的想法。

0 投票
1 回答
56 浏览

python - 如何使用 Python 在单个数据集中拟合多个 HMM?

我正在尝试将 HMM 拟合到我的数据集中以进行建模。使用 hmmlearn 的 hmm.GaussianHMM 函数,我已经拟合了具有 2-5 个隐藏状态的单个 HMM。我的代码如下所示:

上面的代码是 2 个隐藏状态的 GaussianHMM。

现在,如果我想在现有 HMM 旁边的相同数据中安装另一个 HMM,我应该怎么做?所以,我希望我的数据集有两个 HMM,每个 HMM 有 2-5 个隐藏状态。这方面的任何资源或提示都将非常有用。

0 投票
1 回答
641 浏览

python - hmmlearn GMMHMM 中的参数参数未按预期工作

我有想要拟合 GMMHMM 的一维(单一特征)数据。有两个隐藏状态,我知道每个状态输出的概率分布。也就是说,我知道先验分布,因此知道 GMM 参数。所以我不希望 hmmlearn 对象更新 GMM 的均值协变量、权重

我想通过将paramsinit_params参数设置为仅更新startprobtransmat来完成此操作。

但是 hmmlearn 最终也会更新meancovarsweights。如何阻止它更新这些并让它只更新startprobtransmat

这是我的代码

您可以看到,即使均值保持不变,权重协变量也发生了变化。

非常感谢您的帮助!

GMMHMM 文档

init_params :控制在训练之前初始化哪些参数。可以包含 's' 表示 startprob,'t' 表示 transmat,'m' 表示均值,'c' 表示协变量,以及 'w' 表示 GMM 混合权重的任意组合。默认为所有参数。

params :控制在训练过程中更新哪些参数。可以包含用于 startprob 的“s”、用于 transmat 的“t”、用于均值的“m”和用于 covars 的“c”以及用于 GMM 混合权重的“w”的任意组合。默认为所有参数。

0 投票
1 回答
320 浏览

python - 如何使用转换和计数从字典创建转换矩阵

我正在尝试创建一个 HMM,我想创建我的转换矩阵,但我不确定如何。我有一本包含转换的字典以及这些转换发生的概率,如下所示(仅更大):

我定义如下:

现在我想从中制作一个转换矩阵,这将是一个多维数组,但我不知道该怎么做。谁能帮帮我。

转换矩阵看起来像这样的示例(当然只有更多状态):

0 投票
1 回答
547 浏览

python - 退化解决方案:为什么我的模型有这么多自由标量参数

我正在尝试使用 Hmmlearn 来安装和训练 HMM,但是我收到了这个我不完全理解的奇怪警告:

用只有 550034 个数据点的 117917879 个自由标量参数拟合模型将导致退化解。

我使用了相当大的数据集,但我不明白 117917879 自由标量参数来自哪里,以及拥有退化解决方案意味着什么。

我定义我的嗯如下:

任何人都可以帮助我改进,或者至少解释标量参数的来源,以及退化的解决方案是什么?

0 投票
1 回答
239 浏览

python - HMMlearn:如何使用 predict_proba 函数?

我试图在我的 HMM 上使用predict_proba()函数,但我得到一个我不完全理解的错误。首先,我创建我的模型如下:

integer_list 是我的整数列表,这是我的训练数据。如果我随后尝试按如下方式运行 predict_proba 函数,则会收到以下错误:

有谁知道如何解决这个问题?我已经尝试将我的数组转换为列表,但这会产生类似的错误。

0 投票
1 回答
217 浏览

python-3.x - 是否有一个函数可以计算给定 hmmlearn 上的隐藏马尔可夫模型的观测序列 T 的概率?

我有一个使用 hmmlearn.fit 函数拟合的 GaussianHMM。我还有一堆观察序列,我想根据我的拟合模型计算每个序列发生的概率。我查看了 hmmlearn 的文档,但找不到可以满足我要求的方法。在这种情况下,我是否只需要编写前后向算法?如果我对前后编码进行编码,我还需要发射矩阵,这不是由 hmmlearn 给出的。

有人对此有什么建议吗?谢谢你!

0 投票
1 回答
63 浏览

python - 如何解决 ValueError: Expected 2D array, got scalar array instead of error in python?

我有一个 nX2 维数组,并且定义了一些 HMM 模型。现在,对于存在的每个 HMM 模型,我正在尝试计算 nx2 数组中存在的每个值的对数似然值。为此,我使用 hmmlearn 包中的 score 函数

链接:https ://hmmlearn.readthedocs.io/en/latest/api.html#hmmlearn.base._BaseHMM.score

作为参考,这些是我编写的代码:

定义 HMM 模型之一:

然后,与 Score 函数一起使用的数据集:

查找分数的代码:

正是在这一点上遇到了错误:

我在这个网站上阅读了一些类似的问题,并尝试使用 (-1,1) 和 (1,-1) 重塑我的数组,但它会产生相同的错误。

任何解决错误的技术将不胜感激。谢谢!