栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

隐马可夫模型

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

隐马可夫模型

隐马可夫模型 维特比算法

代码实现

import numpy as np
import math
import operator
s=np.array([0.4,0.6]) #初始概率,S=0.4 R=0.6
e=np.array([[0.6,0.1],#发射概率 S1 R1               
           [0.4,0.3],#          S2 R2
          [0.5,0.1]])#          S3 R3
t=np.array([[0.4,0.6],#转换概率 SR   SS
           [0.7,0.3]])#         RR   RS
for i in range (2):
    one=s[i]*e[0,i]
    print (one)
0.24
0.06
one=np.array([0.24,0.06])
one
array([0.24, 0.06])
for i in range (2):
    two1=one[0]*t[0,i]*e[1,i]
    two2=one[1]*t[1,i]*e[1,i]
    print (i,two1,two2)#竖着看,第一列SR SS 第二列是RR RS
0 0.038400000000000004 0.0168
1 0.043199999999999995 0.005399999999999999
m=np.max([0.0384,0.0168])#SR 和 RR
n=np.max([0.0432,0.0054])#SS 和 RS
print(m,n)#第二天是sunny时,第一天是sunny概率最大;第二天是rainy时,第一天是sunny概率最大。只要最大的,把小的都舍弃掉,这就是维特比算法的核心。
0.0384 0.0432
for i in range (2):
    three1=n*t[0,i]*e[2,i]#SS
    three2=m*t[1,i]*e[2,i]#SR
    print (i,three1,three2) #第一列,SSR SSS  第二列,SRR SRS
0 0.00864 0.013439999999999999
1 0.0025920000000000006 0.001152
M=np.max([0.0086,0.01344,0.0026,0.001152])
M    #求出的最大值,SSR
0.01344
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/283425.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号