Python实现隐马尔可夫模型的前向后向算法
本篇文章对隐马尔可夫模型的前向和后向算法进行了Python实现,并且每种算法都给出了循环和递归两种方式的实现。 文章目录 前向算法Python实现 循环方式 递归方式 后向算法Python实现 循环方式 递归方式 前向算法Python实现 循环方式 import numpy as np def hmm_forward ( Q , V , A , B , pi , T , O , p ) : """ :param Q: 状态集合 :param V: 观测集合 :param A: 状态转移概率矩阵 :param B: 观测概率矩阵 :param pi: 初始概率分布 :param T: 观测序列和状态序列的长度 :param O: 观测序列 :param p: 存储各个状态的前向概率的列表,初始为空 """ for t in range ( T ) : # 计算初值 if t == 0 : for i in range ( len ( Q ) ) : p . append ( pi [ i ] * B [ i , V [ O [ 0 ] ] ] ) # 初值计算完毕后,进行下一时刻的递推运算 else : alpha_t_ = 0 alpha_t_t = [ ] for i in range ( len ( Q ) ) : for j in range ( len ( Q ) ) :