Python隐形马尔科夫实战_python实现隐马尔科夫模型HMM

本文提供了一份完全按照李航《统计学习方法》介绍的Python隐马尔科夫模型(HMM)代码,包括前向算法、带修正的前向算法、后向算法、Viterbi算法等,并通过Baum-Welch算法进行模型训练。详细解释了每个函数的作用和实现过程,是理解HMM和实践应用的好资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一份完全按照李航<>介绍的HMM代码,供大家参考,具体内容如下

#coding=utf8

'''''

Created on 2017-8-5

里面的代码许多地方可以精简,但为了百分百还原公式,就没有精简了。

@author: adzhua

'''

import numpy as np

class HMM(object):

def __init__(self, A, B, pi):

'''''

A: 状态转移概率矩阵

B: 输出观察概率矩阵

pi: 初始化状态向量

'''

self.A = np.array(A)

self.B = np.array(B)

self.pi = np.array(pi)

self.N = self.A.shape[0] # 总共状态个数

self.M = self.B.shape[1] # 总共观察值个数

# 输出HMM的参数信息

def printHMM(self):

print ("==================================================")

print ("HMM content: N =",self.N,",M =",self.M)

for i in range(self.N):

if i==0:

print ("hmm.A ",self.A[i,:]," hmm.B ",self.B[i,:])

else:

print (" ",self.A[i,:]," ",self.B[i,:])

print ("hmm.pi",self.pi)

print ("==================================================")

# 前向算法

def forwar(self, T, O, alpha, prob):

'''''

T: 观察序列的长度

O: 观察序列

alpha: 运算中用到的临时数组

prob: 返回值所要求的概率

'''

# 初始化

for i in range(self.N):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值