python vertibi算法實(shí)現(xiàn)原理解析
題目闡釋
viterbi算法實(shí)現(xiàn)。 用python實(shí)現(xiàn)viterbi的hidden state 和 表現(xiàn)層的轉(zhuǎn)移動(dòng)態(tài)規(guī)劃問(wèn)題,歸結(jié)到相鄰兩個(gè)step之間存在 state轉(zhuǎn)移概率,state2emibission轉(zhuǎn)移概率。
計(jì)算后可以得到每個(gè)step的每個(gè)state max_probablity
由于step_n依賴于 step_n-1,跟 step_n-2無(wú)關(guān),所以可以一直如此往復(fù),得到最后的max_prob
整個(gè)問(wèn)題抽象為,下一個(gè)step依賴于上一個(gè)step的所有state,所以只需要計(jì)算每一層step的所有state的prbo即可。
難點(diǎn)
三層for循環(huán),為了保留,計(jì)算每個(gè)step的state的概率,所以要 next_state 嵌套在 source_state之外。
states=['Rainy','Sunny'] observations=['walk','shop','clean'] observations=('walk','clean','walk') emission_probability={'Rainy':{'walk':0.1,'shop':0.4,'clean':0.5}, 'Sunny': {'walk': 0.6, 'shop': 0.3, 'clean': 0.1} } trans_probability={'Rainy':{'Rainy':0.7,'Sunny':0.3}, 'Sunny':{'Rainy':0.4,'Sunny':0.6} } start_probability={'Rainy':0.6,'Sunny':0.4} def vertibi(states,objservations,start_prob,trans_prob,emi_prob): T={state:[start_prob[state],[state],start_prob[state]] for state in states} for objservation in objservations: U={} for next_state in states: total=0 argmax=None valmax=0 for source_state in states: prob,v_path,v_prob=T[source_state] p=emi_prob[source_state][objservation]*trans_prob[source_state][next_state] prob*=p v_prob*=p if v_prob>valmax: valmax=v_prob argmax=v_path+[next_state] total+=prob U[next_state]=[total,argmax,valmax] T=U total = 0 argmax = None valmax = 0 for state in states: prob, v_path, v_prob=T[state] if v_prob>valmax: argmax=v_path total=prob valmax=v_prob return total,argmax,valmax total,argmax,valmax=vertibi(states,observations,start_probability,trans_probability,emission_probability) print(total) print(argmax) print(valmax)
以上就是python vertibi算法實(shí)現(xiàn)原理解析的詳細(xì)內(nèi)容,更多關(guān)于python vertibi算法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
pip matplotlib報(bào)錯(cuò)equired packages can not be built解決
這篇文章主要介紹了pip matplotlib報(bào)錯(cuò)equired packages can not be built解決,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01python matplotlib實(shí)現(xiàn)坐標(biāo)投影的示例代碼
這篇文章主要為大家詳細(xì)介紹了python matplotlib實(shí)現(xiàn)坐標(biāo)投影,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02對(duì)python中數(shù)據(jù)集劃分函數(shù)StratifiedShuffleSplit的使用詳解
今天小編就為大家分享一篇對(duì)python中數(shù)據(jù)集劃分函數(shù)StratifiedShuffleSplit的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12python代碼如何實(shí)現(xiàn)余弦相似性計(jì)算
這篇文章主要介紹了python代碼如何實(shí)現(xiàn)余弦相似性計(jì)算,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02python實(shí)現(xiàn)播放音頻和錄音功能示例代碼
這篇文章主要給大家介紹了關(guān)于python播放音頻和錄音的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12