Scikit学习高斯HMM:ValueError:startprob必须加和为1.0

问题描述 投票:4回答: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)

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

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

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

raise ValueError('startprob must sum to 1.0')

ValueError:startprob必须等于1.0

如果我删除了某些功能(每个观察少于13个功能),它仍然可以正常工作。我已经检查了所有输入是否有效,并且每个训练示例都仅包含numpy.float64s的2d数组。对出什么问题有任何想法吗?谢谢!

我目前正在使用Scikit Learn,并且在尝试训练高斯HMM时遇到了以下问题:文件“ /Library/Python/2.7/site-packages/sklearn/hmm.py”,第443行,。 ..

python python-2.7 numpy scikit-learn hidden-markov-models
5个回答
3
投票

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

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

1
投票

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


0
投票

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


0
投票

模型仅在拟合数据时遇到麻烦。您可以通过一些围绕它的代码来继续尝试。您可能需要添加一点使其多次尝试后停止。如果仍然不起作用,请更改隐藏状态的数量。


0
投票

似乎hmmlearn软件包存在问题。以下对我有用

© www.soinside.com 2019 - 2024. All rights reserved.