我使用 HMM 来预测人类的行为。隐藏状态分别是“休息、步行、吃饭”和“观察”,分别是“室内”、“室外”和“零食”。hState = ['Rset', 'Walk', 'Eat']Obs = ['Inside 1', 'Outside 2', 'Snack 3']order = [1, 2, 1, 2, 3 ,2, 2, 3, 1, 2 ,2, 2, 1, 2]no = 3sProb = np.array([0.1, 0.8, 0.1])tProb = np.array([[0.2, 0.2, 0.6], [0.1, 0.8, 0.1], [0.6, 0.1, 0.3]])eProb = np.array([[0.7, 0.2, 0.1], [0.1, 0.6, 0.3], [0.2, 0.3, 0.5]])h = hmm.MultinomialHMM(3, "full", sProb, tProb)h.emissionprob_ = eProboreder1 = np.array([order]).Tresult= hmm.GaussianHMM(n_components=no).fit(oreder1)result.predict(oreder1)但每当我再次运行代码时,结果就会改变。结果序列正确,但隐藏状态id发生变化 第一次运行的结果array([2, 1, 2, 1, 0, 1, 1, 0, 2, 1, 1, 1, 2, 1])第二次运行的结果array([0, 1, 0, 1, 2, 1, 1, 2, 0, 1, 1, 1, 0, 1])我想知道的是如何获得每次运行的恒定值或如何最终确定模型。感谢您提前的答复。
1 回答
![?](http://img1.sycdn.imooc.com/533e4c5600017c5b02010200-100-100.jpg)
慕标5832272
TA贡献1966条经验 获得超4个赞
隐马尔可夫模型 (HMM) 是随机的 - 它们使用随机数生成器来帮助做出决策。因此,如果多次运行代码,每次执行都会不同,因为幕后使用的随机数不同。
如果您想让每次运行都使用相同的随机数序列,则需要设置随机数“种子”。查看hmm
文档以了解如何设置种子。将其设置为固定值将确保每次执行都使用相同的随机数序列,并且每次运行都会产生相同的结果。
最终确定模型的问题远远超出了本网站的范围。本质上,您必须了解 HMM、它们如何工作、它们做出什么假设,以及您的用例如何符合(或不符合!)这些假设。然后,您使用最佳判断结合严格的测试/培训来确定最终的参数化。
添加回答
举报
0/150
提交
取消