Python Scikit学习高斯HMM:ValueError:startprob的总和必须为1.0

Python Scikit学习高斯HMM:ValueError:startprob的总和必须为1.0,python,python-2.7,numpy,scikit-learn,hidden-markov-models,Python,Python 2.7,Numpy,Scikit Learn,Hidden Markov Models,我目前正在与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行,在 super(GaussianHMM, self)._do_mstep(stats, params

我目前正在与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行,在

super(GaussianHMM, self)._do_mstep(stats, params)
np.maximum(self.startprob_prior - 1.0 + stats['start'], 1e-20))
文件“/Library/Python/2.7/site packages/sklearn/hmm.py”,第580行,在

super(GaussianHMM, self)._do_mstep(stats, params)
np.maximum(self.startprob_prior - 1.0 + stats['start'], 1e-20))
文件“/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的2d数组。你知道哪里出了问题吗?
谢谢

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

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

while True:
  try:
    model.fit([data])
    break

我在使用GaussianHMM时也遇到了同样的问题。我发现问题是因为我输入了分类器整数值,而它需要浮点值。当我意识到多项式HMM只接受continuos值时,我试着使用浮点数,结果成功了

我通过将params属性设置为训练集中所有唯一值的集合,解决了这个问题

param=set(train.ravel())
model=hmm.GaussianHMM(n_components=6, covariance_type="full", n_iter=100,params=param)
train是我用来匹配模型的numpy阵列列表


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

看起来
hmmlearn
软件包有一些问题。以下几点对我有用

  • 卸载hmmlearn的pip版本:
    pip卸载hmmlearn
  • 从中获取hmmlearn的源代码
  • 从和中删除-1.0
  • 使用
    python setup.py安装安装
这应该行得通。hmmlearn出现了一个问题,但没有得到必要的注意


积分-

在高斯初始化中使用哪些参数?