当前位置:
首页 > Python基础教程 >
-
python vertibi算法实现原理解析
这篇文章主要为大家介绍了python vertibi算法实现原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
题目阐释
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)
以上就是python vertibi算法实现原理解析的详细内容,更多关于python vertibi算法的资料请关注其它相关文章!
原文链接:https://segmentfault.com/a/1190000015852132
栏目列表
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
开启SQLSERVER数据库缓存依赖优化网站性能
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比