Scikit Learn Gaussian HMM:值错误:startprob的和必须为1.0

2024-10-01 11:37:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在与Scikit Learn合作,在尝试训练高斯HMM时遇到了以下问题:

File "/Library/Python/2.7/site-packages/sklearn/hmm.py", line 443, in fit

self._do_mstep(stats, self.params)

File "/Library/Python/2.7/site-packages/sklearn/hmm.py", line 798, in _do_mstep

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

File "/Library/Python/2.7/site-packages/sklearn/hmm.py", line 580, in _do_mstep

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

File "/Library/Python/2.7/site-packages/sklearn/hmm.py", line 476, in _set_startprob

raise ValueError('startprob must sum to 1.0')

ValueError: startprob must sum to 1.0

如果我去掉一些特征(每次观察少于13个特征),它仍然有效。我已经检查了所有的输入是否有效,并且只包含数字浮动64S对于每个培训示例。有什么问题吗? 谢谢!在


Tags: inpyselfpackagesstatslinelibrarysite
3条回答

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

我在使用GaussianHMM的时候也遇到了同样的问题。我发现问题是因为我给分类器输入整数值,而它需要浮点值。当我意识到多项式hmm只接受连续值时,我尝试使用浮点数,而且它起作用了!在

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

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

train是我用来匹配模型的numpy数组的列表。在

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

相关问题 更多 >