提问者:小点点

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


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

文件"/库/Python/2.7/site-包/skLearning/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)

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

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')

必须求和到1.0

如果我消除了一些特征(每次观察少于13个特征),它仍然有效。我已经检查了所有输入是否有效,并且只包含numpy的2d数组。每个培训示例使用64个浮点数。你知道哪里出了问题吗?谢谢


共3个答案

匿名用户

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

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

train是我用来匹配模型的numpy阵列列表。

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

匿名用户

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

匿名用户

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