我使用 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、它們如何工作、它們做出什么假設,以及您的用例如何符合(或不符合!)這些假設。然后,您使用最佳判斷結合嚴格的測試/培訓來確定最終的參數化。
添加回答
舉報
0/150
提交
取消