5

我目前正在使用 Scikit Learn,并且在尝试训练高斯 HMM 时遇到了以下问题:

文件“/Library/Python/2.7/site-packages/sklearn/hmm.py”,第 443 行,适合

self._do_mstep(stats, self.params)

文件“/Library/Python/2.7/site-packages/sklearn/hmm.py”,第 798 行,在 _do_mstep

super(GaussianHMM, self)._do_mstep(stats, params)

_do_mstep 中的文件“/Library/Python/2.7/site-packages/sklearn/hmm.py”,第 580 行

np.maximum(self.startprob_prior - 1.0 + stats['start'], 1e-20))

_set_startprob 中的文件“/Library/Python/2.7/site-packages/sklearn/hmm.py”,第 476 行

raise ValueError('startprob must sum to 1.0')

ValueError:startprob 的总和必须为 1.0

如果我消除一些特征(每次观察少于 13 个特征),它仍然有效。我检查了所有输入是否有效,并且每个训练示例仅包含 numpy.float64 的二维数组。关于出了什么问题的任何想法?谢谢!

4

5 回答 5

3

我通过将 params 属性设置为训练集中的所有唯一值来解决此问题。

param=set(train.ravel())
model=hmm.GaussianHMM(n_components=6, covariance_type="full", n_iter=100,params=param)

train 是我用于拟合模型的 numpy 数组列表。

初始参数设置为所有 ascii 字符的字符串。

于 2015-12-03T09:59:58.447 回答
1

我只是在使用 GaussianHMM 时遇到同样的问题。我发现问题出在我为分类器提供整数值而它需要浮点值这一事实。当我意识到 MultinomialHMM 只接受连续值时,我尝试使用浮点数,并且它有效!

于 2015-09-07T02:33:11.943 回答
0

我有同样的问题。我可以通过调整模型隐藏状态的数量来解决它。似乎,根据可用数据和状态数,模型无法正确拟合

于 2014-01-04T16:06:11.623 回答
0

该模型只是无法拟合数据。你可以通过一些代码来继续尝试。您可能需要添加一点以使其在多次尝试后停止。如果这仍然不起作用,请更改隐藏状态的数量。

while True:
  try:
    model.fit([data])
    break
于 2015-06-18T17:22:25.757 回答
0

hmmlearn看起来包裹有问题。以下对我有用

  • 卸载 pip 版本的 hmmlearn:pip uninstall hmmlearn
  • 从这里获取 hmmlearn 的源代码。
  • 这里这里删除 -1.0
  • 安装使用python setup.py install

这应该有效。提出了一个问题,hmmlearn但没有得到必要的关注。关联

学分 - https://github.com/wblgers/hmm_speech_recognition_demo

于 2019-11-17T22:26:35.333 回答