摘要:题目阐释算法实现。用实现的和表现层的转移动态规划问题,归结到相邻两个之间存在转移概率,转移概率。难点三层循环,为了保留,计算每个的的概率,所以要嵌套在之外。
题目阐释:
viterbi算法实现。 用python实现viterbi的hidden state 和 表现层的转移 动态规划问题,归结到 相邻两个step之间存在 state转移概率,state2emibission转移概率。 计算后可以得到每个step的每个state max_probablity 由于step_n依赖于 step_n-1,跟 step_n-2无关,所以可以一直如此往复,得到最后的max_prob 整个问题抽象为,下一个step依赖于上一个step的所有state,所以只需要计算每一层step的所有state的prbo即可。
难点:
三层for循环,为了保留,计算每个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)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/42110.html
摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...
摘要:源码漫游指南一作者秘塔科技算法研究员前几天发布了第五届顶级语言交互排行榜,语言继续稳坐第一把交椅,并且相比去年的排行情况,拉开了与第二名的距离去年第二名的排名得分为。包含字节码相关的底层抽象。字节码对象的实现。源文件执行结束后的清理工作。 Python源码漫游指南(一) 作者:秘塔科技算法研究员 Qian Wan 前几天IEEE Spectrum发布了第五届顶级语言交互排行榜,Pyth...
摘要:的解析器实现更成熟,第三方库质量高解析器尽管已经有了很大的性能提升和很多新的功能,但是从源代码实现的角度来说,基本上是通过在源代码上打来增加功能的。相对而言,解析器更成熟,也比较稳定。 最近在考虑学习一门后端语言,在ruby和python直接犹豫,然后自己做了一些对比,希望能帮到有同样问题的你。 一、异同对比选择1、Python和ruby的相同点: 都强调语法简单,都具有更一般的表达...
阅读 2218·2021-09-02 15:11
阅读 1540·2019-08-30 15:43
阅读 2083·2019-08-29 13:48
阅读 2803·2019-08-26 13:55
阅读 2111·2019-08-23 15:09
阅读 2908·2019-08-23 14:40
阅读 3438·2019-08-23 14:23
阅读 2648·2019-08-23 14:20