HMM 隐马尔科夫 Python 代码
import numpy as np
# -*- codeing:utf-8 -*-
__author__ = 'youfei' # 隐状态
hidden_state = ['sunny', 'rainy'] # 观测序列
obsevition = ['walk', 'shop', 'clean'] # 根据观测序列、发射概率、状态转移矩阵、发射概率
# 返回最佳路径
def compute(obs, states, start_p, trans_p, emit_p):
# max_p(3*2)每一列存储第一列不同隐状态的最大概率
max_p = np.zeros((len(obs), len(states))) # path(2*3)每一行存储上max_p对应列的路径
path = np.zeros((len(states), len(obs))) # 初始化
for i in range(len(states)):
max_p[0][i] = start_p[i] * emit_p[i][obs[0]]
path[i][0] = i for t in range(1, len(obs)):
newpath = np.zeros((len(states), len(obs)))
for y in range(len(states)):
prob = -1
for y0 in range(len(states)):
nprob = max_p[t-1][y0] * trans_p[y0][y] * emit_p[y][obs[t]]
if nprob > prob:
prob = nprob
state = y0
# 记录路径
max_p[t][y] = prob
for m in range(t):
newpath[y][m] = path[state][m]
newpath[y][t] = y path = newpath max_prob = -1
path_state = 0
# 返回最大概率的路径
for y in range(len(states)):
if max_p[len(obs)-1][y] > max_prob:
max_prob = max_p[len(obs)-1][y]
path_state = y return path[path_state] state_s = [0, 1]
obser = [0, 1, 2] # 初始状态,测试集中,0.6概率观测序列以sunny开始
start_probability = [0.6, 0.4] # 转移概率,0.7:sunny下一天sunny的概率
transititon_probability = np.array([[0.7, 0.3], [0.4, 0.6]]) # 发射概率,0.4:sunny在0.4概率下为shop
emission_probability = np.array([[0.1, 0.4, 0.5], [0.6, 0.3, 0.1]]) result = compute(obser, state_s, start_probability, transititon_probability, emission_probability) for k in range(len(result)):
print(hidden_state[int(result[k])])
HMM 隐马尔科夫 Python 代码的更多相关文章
- Atitit 马尔可夫过程(Markov process) hmm隐马尔科夫。 马尔可夫链,的原理attilax总结
Atitit 马尔可夫过程(Markov process) hmm隐马尔科夫. 马尔可夫链,的原理attilax总结 1. 马尔可夫过程1 1.1. 马尔科夫的应用 生成一篇"看起来像文章的 ...
- HMM隐马尔科夫模型
这是一个非常重要的模型,凡是学统计学.机器学习.数据挖掘的人都应该彻底搞懂. python包: hmmlearn 0.2.0 https://github.com/hmmlearn/hmmlearn ...
- HMM隐马尔科夫算法(Hidden Markov Algorithm)初探
1. HMM背景 0x1:概率模型 - 用概率分布的方式抽象事物的规律 机器学习最重要的任务,是根据一些已观察到的证据(例如训练样本)来对感兴趣的未知变量(例如类别标记)进行估计和推测. 概率模型(p ...
- 自然语言处理(1)-HMM隐马尔科夫模型基础概念(一)
隐马尔科夫模型HMM 序言 文本序列标注是自然语言处理中非常重要的一环,我先接触到的是CRF(条件随机场模型)用于解决相关问题,因此希望能够对CRF有一个全面的理解,但是由于在学习过程中发现一个算法像 ...
- HMM 隐马尔科夫模型
参考如下博客: http://www.52nlp.cn/itenyh%E7%89%88-%E7%94%A8hmm%E5%81%9A%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8 ...
- 隐马尔科夫模型,第三种问题解法,维比特算法(biterbi) algorithm python代码
上篇介绍了隐马尔科夫模型 本文给出关于问题3解决方法,并给出一个例子的python代码 回顾上文,问题3是什么, 下面给出,维比特算法(biterbi) algorithm 下面通过一个具体例子,来说 ...
- 用hmmlearn学习隐马尔科夫模型HMM
在之前的HMM系列中,我们对隐马尔科夫模型HMM的原理以及三个问题的求解方法做了总结.本文我们就从实践的角度用Python的hmmlearn库来学习HMM的使用.关于hmmlearn的更多资料在官方文 ...
- HMM基本原理及其实现(隐马尔科夫模型)
HMM(隐马尔科夫模型)基本原理及其实现 HMM基本原理 Markov链:如果一个过程的“将来”仅依赖“现在”而不依赖“过去”,则此过程具有马尔可夫性,或称此过程为马尔可夫过程.马尔可夫链是时间和状态 ...
- 隐马尔科夫模型的Python3实现代码
下面给出计算隐马尔科夫模型的编程代码: from hmmlearn.hmm import GaussianHMM import datetime import numpy as np from mat ...
随机推荐
- 【Trie】背单词
参考博客: https://www.luogu.org/problemnew/solution/P3294 https://blog.csdn.net/VictoryCzt/article/detai ...
- SQL Server循环插入
一个SQL循环插入的代码,运行正常: BEGIN DECLARE @idx AS INT; DECLARE @NodeName nvarchar(255); DECLARE @OtherName nv ...
- k8s-jenkins pipeline部署
- 禅道工具的下载和使用(原地址:https://www.cnblogs.com/ydnice/p/5800256.html)
下载地址:http://sourceforge.net/projects/zentao/files/8.2/ZenTaoPMS.8.2.stable.exe/download 1.解压ZenTaoPM ...
- 3037 插板法+lucas
先说下lucas定理 1)Lucas定理:p为素数,则有: (2)证明: n=(ak...a2,a1,a0)p = (ak...a2,a1)p*p + a0 = [n/p]*p+a0 (注意 这里( ...
- .Net下二进制形式的文件存储与读取
.Net下图片的常见存储与读取凡是有以下几种:存储图片:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[].1.参数是图片路径:返回 ...
- 微信小程序页面跳转区别总结
redirectTo.navigateTo与switchTap区别 用了这么多天的页面跳转 该总结下了 redirectTo:关闭当前页,跳转到指定页:navigateTo:保留当前页,跳转到指定页: ...
- mORMot学习笔记2-2种方式查询数据
本例使用SqlServer 第一种方式结果放入Memo控件,,需要引用SynCommons, SynDB, SynOleDb; procedure TForm1.Button1Click(Sender ...
- 智能指针原理及实现(2)unique_ptr
只允许基础指针的一个所有者. 可以移到新所有者(具有移动语义),但不会复制或共享(即我们无法得到指向同一个对象的两个unique_ptr). 替换已弃用的 auto_ptr. 相较于 boost::s ...
- 使用Fiddler工具在夜神模拟器或手机上抓包
下载安装Fiddler 地址:https://www.telerik.com/download/fiddler-everywhere Fiddler端设置 Tools>Options>Co ...