Viterbi algorithm

最后更新于:2022-04-01 01:25:11

HMM(隐马尔可夫模型)是用来描述隐含未知参数的统计模型,举一个经典的例子:一个东京的朋友每天根据天气{下雨,天晴}决定当天的活动{公园散步,购物,清理房间}中的一种,我每天只能在twitter上看到她发的推“啊,我前天公园散步、昨天购物、今天清理房间了!”,那么我可以根据她发的推特推断东京这三天的天气。在这个例子里,显状态是活动,隐状态是天气。 任何一个HMM都可以通过下列五元组来描述: ~~~ :param obs:观测序列 :param states:隐状态 :param start_p:初始概率(隐状态) :param trans_p:转移概率(隐状态) :param emit_p: 发射概率 (隐状态表现为显状态的概率) ~~~ [![6cbb8645gw1egs40a3bpmj208n09574o](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-07-22_55af681bc3382.jpg "6cbb8645gw1egs40a3bpmj208n09574o")](http://www.niubua.com/wp-content/uploads/2015/07/6cbb8645gw1egs40a3bpmj208n09574o.jpg) 伪码如下: ~~~ states = ('Rainy', 'Sunny') observations = ('walk', 'shop', 'clean') start_probability = {'Rainy': 0.6, 'Sunny': 0.4} transition_probability = { 'Rainy' : {'Rainy': 0.7, 'Sunny': 0.3}, 'Sunny' : {'Rainy': 0.4, 'Sunny': 0.6}, } emission_probability = { 'Rainy' : {'walk': 0.1, 'shop': 0.4, 'clean': 0.5}, 'Sunny' : {'walk': 0.6, 'shop': 0.3, 'clean': 0.1}, } ~~~
';