隐马尔科夫模型 介绍 HMM python代码

来源:互联网 发布:阿里云机房位置 编辑:程序博客网 时间:2024/05/22 01:35

 

 

#HMM Forward algorithm    #input  Matrix A,B vector pi    import  numpy as np      A=np.array([[0.5,0.2,0.3],[0.3,0.5,0.2],[0.2,0.3,0.5]])  B=np.array([[0.5,0.5],[0.4,0.6],[0.7,0.3]])  O=np.array([0 ,1, 0])#T=3  #O=np.array([1 ,0, 1])#T=3  pi=np.array([0.2,0.4,0.4])    N=3#N kind state  M=2#M kind of observation  T=3    #initialize:    Aerfa=np.zeros((3,3),np.float)  for i in range(N):      Aerfa[0,i]=pi[i]*B[i,O[0]]          #Recursion:  for t in range(T-1):      for i in range(N):            for j in range(N):              Aerfa[t+1,i]+=Aerfa[t,j]*A[j,i]          Aerfa[t+1,i]*=B[i,O[t+1]]        #compute P(O|lamda) and termination  P=0  for i in range(N):      P+=Aerfa[T-1,i]#begin with 0 so T-1              print P          #backward    #initialize:  Beta=np.zeros((T,N),np.float)  print Beta  for i in range(N):      Beta[T-1,i]=1    #recursion:  for t in range(T-2,-1,-1):      for i in range(N):          for j in range(N):              Beta[t,i]+=A[i,j]*B[j,O[t+1]]*Beta[t+1,j]                  #termination:  P_back=0  for i in range(N):      P_back+=pi[i]*B[i,O[0]]*Beta[0,i]        print P_back  

 

 参考文献:统计学习方法,李航。

下一篇将介绍:问题3的具体解决方法为维比特算法(biterbi) algorithm

 

本人水平有限,怀着分享学习的态度发表此文,欢迎大家批评,交流。感谢您的阅读。
欢迎转载本文,转载时请附上本文地址:http://www.cnblogs.com/Dzhouqi/p/3203788.html
另外:欢迎访问我的博客 http://www.cnblogs.com/Dzhouqi/

 

0 0
原创粉丝点击