一、HMM相关概念

二、前向传导

#coding=utf-8
import numpy as np
#前向传导算法def Forward(A,B,Pi,O):n=O.shape[0]m=A.shape[0]dis2src=np.zeros((n,m),dtype=np.float32)#dis2src(i,j)用于保留第i层顶点j出现的概率dis2src[0,:]=Pi*(B[:,O[0]])#初始化第一层各个顶点与观测t=0的联合概率for t in range(n-1):t=t+1for i in range(m):predis=dis2src[t-1,:]#第t时刻的所有顶点,到t+1时刻顶点i的距离总和,然后再计算i顶点到观测变量O[t]的距离dis2src[t,i]=np.sum(predis*A[:,i])*B[i,O[t]]print sum(dis2src[t])A=np.asarray([0.5,0.2,0.3,0.3,0.5,0.2,0.2,0.3,0.5]).reshape(3,3)
B=np.asarray([0.5,0.5,0.4,0.6,0.7,0.3]).reshape(3,2)
Pi=np.asarray([0.2,0.4,0.4])
O=np.asarray([0,1,0])
Forward(A,B,Pi,O)

三、维比特算法实践

#coding=utf-8
import numpy as np
#A为状态转移矩阵,B为观测矩阵,Pi为初始状态概率,o为观测序列
#函数的目标就是返回0所对应的,状态序列
def Viterbi(A,B,Pi,O):n=O.shape[0]m=A.shape[0]dis2src=np.zeros((n,m),dtype=np.float32)#dis2src(i,j)用于保留第i层顶点j,到原点的最大距离path=np.zeros((n,m),dtype=np.int)t=0;dis2src[t,:]=Pi*(B[:,O[t]])#初始化第一层顶点到原点的距离for t in range(n-1):t=t+1for i in range(m):predis=dis2src[t-1,:]#第t时刻的所有顶点,到t+1时刻顶点i的距离node_i2src=predis*A[:,i]dis2src[t,i]=np.max(node_i2src)*B[i,O[t]]path[t,i]=np.argmax(node_i2src);#计算顶点i对应到上一时刻的顶点的最大路径bestpaht=-1*np.ones(n,dtype=np.int)bestpaht[n-1]=(np.argmax(dis2src[n-1,:]))print np.log(np.max(dis2src[n-1,:]))#回溯for t in range(n-1)[::-1]:ti=path[t+1,bestpaht[t+1]]bestpaht[t]=tiprint (bestpaht+1)A=np.asarray([0.333,0.333,0.333,0.333,0.333,0.333,0.333,0.333,0.333]).reshape(3,3)
B=np.asarray([0.5,0.5,0.75,0.25,0.25,0.75]).reshape(3,2)
Pi=np.asarray([0.333,0.333,0.333])
O=np.asarray([0,0,0,0,1,0,1,1,1,1])
Viterbi(A,B,Pi,O)

机器学习(十五)隐马尔科夫模型-未完待续相关推荐

  1. 【火炉炼AI】机器学习044-创建隐马尔科夫模型

    [火炉炼AI]机器学习044-创建隐马尔科夫模型 (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2 ...

  2. 统计学习方法十:隐马尔科夫模型

    一.基本概念 1.马尔科夫假设:当前的状态只与之前的状态有关 2.马尔科夫过程:当前的状态只与前n个状态有关,被称为n阶马尔科夫模型. 3.马尔科夫链:可以理解为带有概率的状态转移链 3.一阶马尔科夫 ...

  3. 机器学习中的隐马尔科夫模型(HMM)详解

    前导性推荐阅读资料: 从朴素贝叶斯分类器到贝叶斯网络(上) 从朴素贝叶斯分类器到贝叶斯网络(下) 欢迎关注白马负金羁的博客 http://blog.csdn.net/baimafujinji,为保证公 ...

  4. 【大道至简】机器学习算法之隐马尔科夫模型(Hidden Markov Model, HMM)详解(3)---学习问题:Baum-Welch算法推导及Python代码实现

    ☕️ 本文系列文章汇总: (1)HMM开篇:基本概念和几个要素 (2)HMM计算问题:前后向算法 (3)HMM学习问题:Baum-Welch算法 (4) HMM预测问题:维特比算法 ☕️ 本文来自专栏 ...

  5. 机器学习知识点(二十五)Java实现隐马尔科夫模型HMM之jahmm库

    1.隐马尔可夫模型HMM的应用场景,关乎于序列和状态变化的都可以.    发现java有可库,专为开发HMM,可惜只能在CSDN上有得下载.     2.jahmm是java开发隐马尔科夫模型的一个j ...

  6. 第十九课.隐马尔科夫模型

    目录 隐马尔科夫模型的结构 马尔科夫链与隐马尔科夫模型 实例 HMM的要素 模型的性质 推理问题:HMM的状态解码 隐状态解码问题 最大路径概率与维特比算法 使用维特比算法解码 实例演示 基于Pyth ...

  7. 机器学习-- > 隐马尔科夫模型(HMM)

    博客内容将首发在微信公众号"跟我一起读论文啦啦",上面会定期分享机器学习.深度学习.数据挖掘.自然语言处理等高质量论文,欢迎关注! 本篇博文将详细总结隐马模型相关知识,理解该模型有 ...

  8. 机器学习知识点(二十四)隐马尔可夫模型HMM维特比Viterbi算法Java实现

    1.隐马尔可夫模型HMM    学习算法,看中文不如看英文,中文喜欢描述的很高深.    http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/ht ...

  9. 机器学习笔记(十三)——隐马尔科夫模型

    一.隐马尔科夫模型 在马尔科夫模型中,每一个状态代表了一个可以观察的事件,所以,马尔科夫模型有时称为可视马尔科夫模型(visible Markov model,VMM),这在某种程度上限制了模型的适应 ...

最新文章

  1. Spring Boot + EasyExcel 导入导出,好用到爆,可以扔掉 POI 了!
  2. Mysql常用数据类型详细说明及实例说明(学习笔记一)
  3. java if else嵌套,减少的 if else 嵌套 可以使用java 8的Consumer
  4. 实习生使用微软雅黑致公司被起诉索赔千万?方正回应...
  5. 如何git-cherry-pick仅更改某些文件?
  6. 除法运算、商、余数与取模
  7. 天玑800处理器支持鸿蒙系统吗,为何Redmi Note 9选择天玑800U处理器?和骁龙750G差距多大...
  8. vue父子组件生命周期执行顺序_Vue.js 父子组件生命周期调用顺序
  9. geoda权重矩阵导入matlab,空间计量 用geoda创建空间权重矩阵
  10. HBase二级索引的设计
  11. win10使用软件提示“为了对电脑进行保护,已经阻止此应用”或软件上面有盾牌不能正常打开软件。
  12. Android 透明度alpha换算表
  13. Java实现九宫格游戏
  14. abaqus如何快速导入其他cae文件的assembly?
  15. 在线绘制网络拓扑图操作方法分享
  16. 浅谈对JIT编译器的理解。
  17. c语言中0x12是什么进制,C语言中进制知识汇总
  18. java遍历map获取key value
  19. inotia4 android mod,Inotia4——武器隐藏属性【完整篇】
  20. Curl工具的说明-安装-简单使用

热门文章

  1. 财经计算机财务函数,会计财务最常用的15个公式函数
  2. 怎么扩展磁盘_电脑怎么增加C盘空间 小白教你不花钱增加C盘空间
  3. java二叉树算法_java构建二叉树算法
  4. mysql存储过程知识点_知识点:Mysql 基本用法之存储过程
  5. MySQL5.5.15_linux下mysql-5.5.15安装详细步骤
  6. java 反射类成员_java 反射(二)类成员
  7. 邮件服务器两种协议,邮件服务器协议
  8. 程序生活----葱油拌面
  9. Python窗体操作函数
  10. 15. Scala并发编程模型Akka