马尔科夫转换矩阵

Out[72]: Sunny  Cloudy  Rainy
Sunny    0.50   0.375  0.125
Cloudy   0.25   0.125  0.625
Rainy    0.25   0.375  0.375

混淆矩阵

         dry  dryish  damp  soggy
Sunny   0.60    0.20  0.15   0.05
Cloudy  0.25    0.25  0.25   0.25
Rainy   0.05    0.10  0.35   0.50

初始向量概率

Sunny     0.63
Cloudy    0.17
Rainy     0.20
dtype: float64

观测状态

obs=('soggy','dryish','dry')
# -*- coding: utf-8 -*-
"""
作者:罗干
Thomas luo
代码优雅是非常必要的
学习算法的最佳方式是分析代码
伪代码与代码的区别等价于猴子与人之间的区别
"""
from numpy import *
import pandas as pddef viterbi(obs,states,start_p,trans_p,emit_p):v=[]fst=obs[0]vn=emit_p[fst]*start_p#计算初始状态v.append(vn)for t in range(1,len(obs)):tp=emit_p[obs[t]]  #通过观测状态,提取混淆矩阵的某一列cc=[]for y in states:#v[t-1]是上一个状态#trans_p[y]是其他状态转换到y状态转换概率,简言之就所有其他状态的的条件概率gv=v[t-1]*trans_p[y]*tp[y]#如果执行这一行代码,就是经典的隐马尔科夫链cc.append(gv.sum())#如果这一行代码就是威比特算法,一言以蔽之,威比特就职最大值,经典算法就是求和#cc.append(gv.max())cc1=pd.Series(cc,index=states)v.append(cc1)result=[]for vector in v :p=vectorp1=p.sort_values(ascending=False)   p2=p1[:1]result.append(dict(p2))return resultstates=('Sunny','Cloudy','Rainy')
obs=('soggy','dryish','dry')
start_p=pd.Series({'Sunny':0.63,'Cloudy':0.17,'Rainy':0.20})
trans_p=pd.DataFrame([[0.50,0.375,0.125],[0.25,0.125,0.625],[0.25,0.375,0.375]],index=('Sunny','Cloudy','Rainy'),columns=('Sunny','Cloudy','Rainy'))emit_p=pd.DataFrame([ [0.60,0.20,0.15,0.05],[0.25,0.25,0.25,0.25],[0.05,0.10,0.35,0.50]],index=('Sunny','Cloudy','Rainy'),columns=('dry','dryish','damp','soggy'))tt=viterbi(obs,states,start_p,trans_p,emit_p)
print(tt)
[{'Rainy': 0.1}, {'Cloudy': 0.013656250000000002}, {'Sunny': 0.0061509375}]

计算结果:雨,云,晴天

python 隐马尔可夫链相关推荐

  1. 算法介绍及实现——马尔可夫链、隐马尔可夫链(附Python实现)

    目录 --马尔可夫链 --隐马尔可夫链  --马尔可夫链 马尔科夫性质:即当前在已知时,过去和未来是独立的,如果知道当前的状态,那么就不许要过去的额外信息来对未来做出预测. 理解:n为n-1的后一个时 ...

  2. python马尔可夫链_[译] 用 Python 实现马尔可夫链的初级教程

    马尔可夫链是通常用一组随机变量定义的数学系统,可以根据具体的概率规则进行状态转移.转移的集合满足 马尔可夫性质 ,也就是说,转移到任一特定状态的概率只取决于当前状态和所用时间,而与其之前的状态序列无关 ...

  3. 多渠道归因分析:python实现马尔可夫链归因(三)

    本篇主要是python实现马尔科夫链归因,关联的文章: 多渠道归因分析(Attribution):传统归因(一) 多渠道归因分析:互联网的归因江湖(二) 多渠道归因分析:python实现马尔可夫链归因 ...

  4. python 隐马尔科夫_机器学习算法之——隐马尔可夫(Hidden Markov ModelsHMM)原理及Python实现...

    前言 上星期写了Kaggle竞赛的详细介绍及入门指导,但对于真正想要玩这个竞赛的伙伴,机器学习中的相关算法是必不可少的,即使是你不想获得名次和奖牌.那么,从本周开始,我将介绍在Kaggle比赛中的最基 ...

  5. python隐式调用方法_Python为什么不隐式实现self

    Python为什么不隐式实现self Python中类的方法都需要显式的传入一个self占位参数,这让写过C#,Java,PHP,Javascript的我很是不习惯,但是Python这么吊,肯定是有他 ...

  6. python隐式等待_selenium中隐式等待和显示等待的区别

    Selenium显示等待和隐式等待的区别 1.selenium的显示等待 原理:显示等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那 ...

  7. python做马尔科夫模型预测法_用Python实现马尔可夫链蒙特卡罗

    摘要: 本文通过用Python中的马尔可夫链蒙特卡罗实现了睡眠模型项目,并教会如何使用MCMC. 在过去的几个月里,我在数据科学领域里遇到一个术语:马尔可夫链蒙特卡罗(MCMC).在博客或文章里,每次 ...

  8. [转载] python隐式转换_Python | 数据类型的转换 显式转换 隐式转换

    参考链接: Python类型转换和类型转换 显式转换 # 首先对要转换的数据进行变量的声明 float_number = 1.5 int_number = 2 # 其他类型转换到字符串,使用的是str ...

  9. 基于改进K-means聚类和隐马尔可夫链的汽车行驶工况构建

    摘 要: 汽车行驶工况的构建对于车辆能耗.排放测试,以及汽车性能指标优化有着重要意义.而欧洲NEDC工况.世界WLTC工况等为基准的行驶工况构建并不完全适用我国汽车行驶工况的构建,基于此,制定反映我国 ...

最新文章

  1. 栈与队列5——汉诺塔问题
  2. 爬虫基础分享Scrapy框架流程图与安装
  3. 【运筹学】表上作业法 ( 求初始基可行解 | 最小元素法 )
  4. 2016012090+小学四则运算练习软件项目报告
  5. SAP标准成本核算重要环节详解
  6. 【NLP】推荐一些NER的英文数据集
  7. java8-4 多态的练习以及题目
  8. 伪共享和缓存行填充,Java并发编程还能这么优化!
  9. PyTorch多GPU并行训练方法及问题整理
  10. php自带解压缩,PHP自带ZIP压缩、解压缩类ZipArchiv使用指南_PHP教程
  11. 【转】【开源专访】谢宝友:会说话的Linux内核
  12. Open Sans字体
  13. EChart如何实现中国地图和省份下钻
  14. JDBC中connection.isClosed 和 connection.isValid的区别
  15. canvas实现图片剪切
  16. 用javascript访问操作iframe中的dom对象
  17. 直流屏电源模块GF22007-2高频充电模块R22007
  18. C++ ActiveX基础1 使用VS2015创建MFC ActiveX工程项目
  19. 华为交换机dhcp获取不到_华为S7706交换机DHCP Server 配置不成功问题
  20. puppy linux u盘 分区,让安装在U盘上的Puppy Linux像安装在硬盘上一样工作

热门文章

  1. SVM学习笔记1-问题定义
  2. Scrum立会报告+燃尽图(十一月十八日总第二十六次):功能开发与讨论贡献分配规则...
  3. 三阶魔方花样玩法,公式汇总
  4. 关于null和undefined
  5. main_loop()函数解析(1)
  6. 查看手机截图的坐标信息
  7. Mysql8.0.20下载和安装
  8. C++归并排序递归写法
  9. mod php是什么意思,mod函数是什么意思
  10. python中一个汉字是几个字符_Python中每次处理一个字符的5种方法