为了账号安全,请及时绑定邮箱和手机立即绑定

隐马尔可夫模型结果(解码)每次都会改变

隐马尔可夫模型结果(解码)每次都会改变

忽然笑 2023-09-19 17:03:22
我使用 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 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

隐马尔可夫模型 (HMM) 是随机的 - 它们使用随机数生成器来帮助做出决策。因此,如果多次运行代码,每次执行都会不同,因为幕后使用的随机数不同。

如果您想让每次运行都使用相同的随机数序列,则需要设置随机数“种子”。查看hmm文档以了解如何设置种子。将其设置为固定值将确保每次执行都使用相同的随机数序列,并且每次运行都会产生相同的结果。

最终确定模型的问题远远超出了本网站的范围。本质上,您必须了解 HMM、它们如何工作、它们做出什么假设,以及您的用例如何符合(或不符合!)这些假设。然后,您使用最佳判断结合严格的测试/培训来确定最终的参数化。


查看完整回答
反对 回复 2023-09-19
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信