主要是转载自:
https://www.cnblogs.com/pinard/p/7001397.html

我自己加了些注释以及修复了一个在python2.7下面运行的bug

1) 评估观察序列概率。
给定模型λ=(A,B,π)和观测序列O
计算P(O|λ)2)模型参数学习问题。
观测序列O
输出λ=(A,B,π)3)预测问题,也称为解码问题。
已知模型(A,B,π),观测序列O(o1,o2,···,oT)
求令P(I|O)最大的状态序列I=(i1,i2,···,iT)

第1个基恩问题和第3个基本问题:

# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
# @Author: appleyuchi
# @Date:   2018-12-31 16:11:34
# @Last Modified by:   appleyuchi
# @Last Modified time: 2018-12-31 17:19:26import numpy as np
from hmmlearn import hmm
from math import log
from math import e
states = ["box 1", "box 2", "box3"]
n_states = len(states)observations = ["red", "white"]
n_observations = len(observations)start_probability = np.array([0.2, 0.4, 0.4])transition_probability = np.array([[0.5, 0.2, 0.3],[0.3, 0.5, 0.2],[0.2, 0.3, 0.5]
])emission_probability = np.array([[0.5, 0.5],[0.4, 0.6],[0.7, 0.3]
])model = hmm.MultinomialHMM(n_components=n_states)
model.startprob_=start_probability#π
model.transmat_=transition_probability#转移概率A
model.emissionprob_=emission_probability#摸取小球的概率Bseen = np.array([[0,1,0]]).T#这里的意思是输入序列为(红,白,红)logprob, box = model.decode(seen, algorithm="viterbi")
# print "observations=",observations
# print "seen=",seen
print"box=",boxprint"---------------下面是隐马尔科夫第1个基本问题-------------------"
# print e
# print model.score(seen)
print "《统计学习方法》P178的HMM第1个基本问题:\nP(O|λ)=",e**model.score(seen)print"---------------下面是隐马尔科夫第2个基本问题-------------------"print"---------------下面是隐马尔科夫第3个基本问题-------------------"
print"The ball picked:", ", ".join(map(lambda x: observations[x], seen[0]))
print"《统计学习方法》P187的HMM第3个基本问题", ", ".join(map(lambda x: states[x], box))

第二个基本问题:

# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')import numpy as np
from hmmlearn import hmmstates = ["box 1", "box 2", "box3"]
n_states = len(states)observations = ["red", "white"]
n_observations = len(observations)
model2 = hmm.MultinomialHMM(n_components=n_states, n_iter=20, tol=0.01)
X2 = np.array([[0,1,0,1],[0,0,0,1],[1,0,1,1]])
print"-------------------------------------------"
model2.fit(X2)
print "π=",model2.startprob_
print "A=",model2.transmat_
print "B=",model2.emissionprob_
print model2.score(X2)
print"-------------------------------------------"
model2.fit(X2)
print "π=",model2.startprob_
print "A=",model2.transmat_
print "B=",model2.emissionprob_
print model2.score(X2)
print"-------------------------------------------"
model2.fit(X2)
print "π=",model2.startprob_
print "A=",model2.transmat_
print "B=",model2.emissionprob_
print model2.score(X2)

李航书上隐马尔科夫模型案例的实验结果复现相关推荐

  1. 炎热天气看书还是钓鱼?隐马尔科夫模型教你预测!

    高温天气与行为概率 夏季是一年最热的时候,气温普遍偏高,一般把日最高气温达到35℃以上的天气叫作高温天气,但是一般情况下高温天气分为两类.  (1)干热型高温.一般是指气温较高.太阳辐射强而且空气的湿 ...

  2. python做马尔科夫模型预测法_李航《统计学习方法》第十章——用Python实现隐马尔科夫模型...

    相关文章: 李航<统计学习方法>第二章--用Python实现感知器模型(MNIST数据集) 李航<统计学习方法>第三章--用Python实现KNN算法(MNIST数据集) 李航 ...

  3. 隐马尔科夫模型(HMM)笔记(公式+代码)

    文章目录 1. 基本概念 1.1 HMM模型定义 1.2 盒子和球模型 1.3 观测序列生成过程 1.4 HMM模型3个基本问题 2. 概率计算问题 2.1 直接计算法 2.2 前向算法 2.2.1 ...

  4. 10_隐马尔科夫模型HMM2_统计学习方法

    文章目录 四.学习算法 1.监督学习方法 2.非监督学习方法(Baum-Welch算法) 五.预测算法 1.近似算法 2.维特比算法 (1)最优路径特性 (2)两个变量 (3)维特比算法流程 隐马尔科 ...

  5. 10_隐马尔科夫模型HMM1_统计学习方法

    文章目录 一.几个基本概念 1.隐马尔可夫模型 2.马尔科夫链 3.随机过程 4.马尔科夫性质 二.隐马尔科夫模型 1.隐马尔科夫模型的引入 2.隐马尔科夫模型定义 3.隐马尔科夫模型的两个假设 4. ...

  6. 隐马尔科夫模型(HMM)浅见

    隐马尔科夫模型,Hidden Marcov Model,是可用于标注问题的统计学习模型,描述由隐藏的马尔科夫链随机生成观测序列的过程,属于生成模型,是一种比较重要的机器学习方法,在语音识别等领域有重要 ...

  7. 隐马尔科夫模型HMM自学 (3)

    Viterbi Algorithm 本来想明天再把后面的部分写好,可是睡觉今天是节日呢?一时情不自禁就有打开电脑.......... 找到可能性最大的隐含状态序列 崔晓源 翻译 多数情况下,我们都希望 ...

  8. 隐马尔科夫模型HMM自学 (2)

    HMM 定义 崔晓源 翻译 HMM是一个三元组 (,A,B).  the vector of the initial state probabilities;  the state transitio ...

  9. 隐马尔科夫模型(HMM)详解

    转载自:http://blog.csdn.net/u012990623/article/details/39353381 隐马尔可夫模型 (Hidden Markov Model,HMM) 最初由 L ...

最新文章

  1. django ---- models继承
  2. [异能程序猿]第一章 酒后事发(第一更)
  3. C语言内存管理超详解
  4. 机器学习之数学基础(四)~Lasso Regression回归, L1、L2 Regularization正则化, 回归问题中的损失函数
  5. mysql查看比较大的数据表_mysql 如何查看哪些表数据量比较大
  6. python 真多线程_Python之路200个小例子,在线网页版来了,从此学习更方便!
  7. 二进制安全与MySQL的关系_《高可用MySQL》节选 -- 安全和二进制日志
  8. 电子计算机什么理论,电子计算机的工作原理是什么?
  9. Keepalived配置文件详解
  10. vue-datepicker的使用
  11. rabbitmq 相关方法
  12. idea隐藏 .iml 和 .idea 等自动生成文件
  13. 值得一看的50条从商之道
  14. 随机过程 - 马尔可夫链
  15. 【小强推歌】---香港历年10大中文金曲 下载 1978-2002
  16. kali linux 打不开终端的问题
  17. MySQL 中你应该使用什么数据类型表示时间?
  18. mini,minis2,御2,御pro可以飞航线,飞跟随
  19. windowsXP用户无法远程桌面连接天翼云2008云主机
  20. 对迪信通手机连锁店电脑的一次手工杀毒

热门文章

  1. oracle脂肪分析仪,CEM推出油脂快速分析新技术
  2. 总结 创建领取 微信会员卡 踩过的坑
  3. iview选择月份 月初月末 时间戳格式
  4. 2021高考成绩查询省排名,重磅!2021全国各地高考预测分数线出炉,这样估分可以估算全省排名...
  5. 按钮点击_如何设置微信小程序按钮点击事件?
  6. linux 字符串加入中括号,Shell 中的中括号用法总结
  7. 清除浮动的方法总结CSS实现水平垂直居中方法总结
  8. 无法访问‘/dev/ttyUSB: usb 基站,即显示端口被占用
  9. **ML : ML中的最优化方法
  10. DNN结构演进History—CNN( 优化,LeNet, AlexNet )