非常纠结,在网上搜马尔可夫出来的都是隐马尔科夫模型

可是我查到的文献提到的都是Markov chain,是马尔可夫链。

我参考隐马尔可夫模型介绍中的马尔可夫过程自己实现了一个马尔可夫链,按我自己的理解做的,不知道是不是真正的马尔可夫链。

马尔可夫过程就是几个状态按一个转移概率矩阵做转移。这个转移概率就是问题中心,我们可以直接用输入序列统计出一个转移概率。

如果是一个往复运动,例如钟摆,左边状态是0,中间是1,右边是2,那么序列就是01210121012101201210121···

马尔可夫假设有一条是下一状态只取决于当前状态,如果当前状态是1,接下来是0或2的概率各占一半。

我们可以稍微扩展一下,用当前状态和上一状态决定下一状态,之前统计出的是一个二维矩阵,现在是三维,就这么简单。

我感觉对轨迹预测这个题目来说这样预测时考虑到的因素除了当前位置还有运动方向。

下面是代码,运行效果很不理想,后面改进

class MarkovChains:def __init__(self):self.count=0;self.arry=[];#list输入数字序列,输入其他内容的字典编码在外面完成def train(self,list):max = 0;for item in list:if item>max:max=itemself.count=max+1for i in range(self.count):list2=[]for j in range(self.count):list2.append([0]*self.count)self.arry.append(list2)for j in range(list.__len__()-2):self.arry[list[j]][list[j+1]][list[j+2]]+=1;#print(self.arry)#预测返回值是统计数量,只能比较大小,不是概率def predict(self,list_previous,list_now,list_next):return (self.arry[list_previous][list_now][list_next])markov=MarkovChains()
list=[24,26,24,7,14,12,14,12,24,26,24,26,24,26,24,26,24,26,24,26,24,26,24,21,12,7,12,14,24,26,24,26,24,26,24,14,12,7,12,14,12,14,24,26,24,7,26,7,24,26,24,26,24,26,24,14,12,14,24,21,7,21,24,21,24,14,12,7,24,21,24,7,12,7,12,7,26,24,26,24,26,24,26,14,7,12,14,24,26,24,26,24,26,24,26,24,21,24,26,24,21,24,21,26,24,21,24,21,24,21,19,21,19,12,21,7,24,21,24,26,16,21,16,7,12,7,12,7,21,24,21,24,21,24,21,24,21,24,21,24,7,12,7,21,7,16,24,26,24,26,21,24,21,24,26,24,21,24,14,12,7,14,7,24,17,20,7,20,19,20,19,20,7,13,7,20,7,76,14,12,14,12,16,12,16,28,29,28,27,29,28,14,19,12,7,24,12,14,35,24,7,38,39,32,42,32,35,38,42,38,24,26,14,39,7,14,12,7,12,14,12,7,32,39,32,39,26,39,14,36,28,36,40,36,7,36,7,12,7,36,28,19,36,32,28,12,19,7,12,7,19,7,19,32,7,32,7,13,22,12,19,12,19,14,32,25,22,25,13,22,7,13,7,25,7,22,25,7,25,1,2,5,4,2,4,2,3,2,3,1,2,7,6,3,2,3,2,3,2,3,2,3,7,3,47,50,47,50,47,50,46,50,47,50,47,51,47,35,21,12,7,14,12,7,35,41,35,24,21,14,20,29,33,29,31,29,31,29,31,33,29,7,13,7,17,7,31,29,31,29,31,29,31,20,31,29,31,29,13,7,20,17,7,13,31,29,43,42,43,42,45,42,44,46,40,43,31,40,31,45,43,45,31,44,41,44,42,41,42,41,12,35,14,21,7,40,41,35,41,43,42,43,40,19,12,19,14,40,36,28,36,40,33,37,33,28,33,28,33,40,33,40,36,7,14,12,7,14,28,19,28,7,28,7,58,59,58,55,58,55,59,45,26,32,39,42,45,32,7,12,14,12,14,7,59,58,59,7,57,54,49,54,49,52,49,52,49,59,52,49,59,60,27,30,27,30,27,34,16,39,32,26,43,7,14,7,12,14,48,53,56,48,56,53,43,7,59,60,59,60,49,59,60,59,60,59,60,59,60,59,60,59,60,55,45,59,7,14,12,7,19,28,33,15,18,15,18,7,12,14,33,29,23,29,25,7,15,38,14,24,18,15,18,15,18,15,18,15,18,15,10,9,18,15,18,15,18,15,7,8,7,8,7,18,15,18,7,8,7,8,18,7,18,15,18,15,18,15,18,15,18,8,7,8,7,11,9,10,9,7,12,7,12,35,21,61,62,63,61,50,63,66,63,66,67,65,63,70,68,69,67,68,71,64,63,64,72,73,74,73,74,64,63,64,75]
#生成隐马尔可夫需要的序列格式
"""strstr="["
for i in list:strstr=strstr+"["+str(i)+"],"
print(strstr)"""markov.train(list)
probList=[]
for i in range(markov.count):probList.append(markov.predict(63,64,i))
#print (str(probList))
print(markov.count)
print(probList.index(max(probList)))

4.预测模型,马尔可夫链相关推荐

  1. 毕业设计之 --- 基于大数据分析的股票预测系统

    文章目录 0 前言 1 课题意义 1.1 股票预测主流方法 2 什么是LSTM 2.1 循环神经网络 2.1 LSTM诞生 2 如何用LSTM做股票预测 2.1 算法构建流程 2.2 部分代码 3 实 ...

  2. 马尔可夫链预测模型的应用——以个人图书借阅为例(改进2.0版)

    第一版(不成功):马尔可夫链预测模型的应用--以个人图书借阅为例 读取个人图书借阅数据 ##图书类别:A马克思主义.列宁主义.毛泽东思想.邓小平理论:B哲学.宗教:C 社会科学总论:D 政治.法律:E ...

  3. 马尔可夫链预测模型的应用——以个人图书借阅为例

    读取个人图书借阅数据 ##图书类别:A马克思主义.列宁主义.毛泽东思想.邓小平理论:B哲学.宗教:C 社会科学总论:D 政治.法律:E 军事:F 经济:G 文化.科学.教育.体育: ##H 语言.文字 ...

  4. 灰色-马尔可夫预测模型

    在实际生活中,我们经常遇到很多要预测的事情,其中很常见的就是对产品销量的预测,这对于防止产品供应不足或者产品滞销的情况是很有用的.我们要介绍的灰色-马尔可夫模型就是一个比较热门的预测模型,它的特点是: ...

  5. 【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享

    原文链接:http://tecdat.cn/?p=2687 在贝叶斯方法中,马尔可夫链蒙特卡罗方法尤其神秘(点击文末"阅读原文"获取完整代码数据). 它们肯定是数学繁重且计算量大的 ...

  6. (改进GM(1,1)模型)灰色残差马尔科夫预测模型的matlab实现

    一.基于灰色残差马尔科夫模型的预测 应用马尔可夫状态转移矩阵对残差灰色预测模型进行了改进,结果表明,改进的预测模型精度较高,比传统灰色模型预测效果好.马尔可夫过程是研究事物状态及其转移的理论 . 一个 ...

  7. 多种马尔可夫链预测方法

    一.基于绝对分布的马尔可夫链预测 步骤1.对历史数据进行分组 步骤2.确定观测值的状态,写出频数矩阵(nij)i,j∈E和一步转移概率矩阵(fij)i,j∈E,其中fij=nij/(n-1),其中n为 ...

  8. 使用马尔可夫链构建文本生成器

    本文中将介绍一个流行的机器学习项目--文本生成器,你将了解如何构建文本生成器,并了解如何实现马尔可夫链以实现更快的预测模型. 文本生成器简介 文本生成在各个行业都很受欢迎,特别是在移动.应用和数据科学 ...

  9. 如何实现马尔可夫链蒙特卡罗MCMC模型、Metropolis算法?

    原文链接:http://tecdat.cn/?p=2687 什么是MCMC,什么时候使用它? MCMC只是一个从分布抽样的算法. 这只是众多算法之一.这个术语代表"马尔可夫链蒙特卡洛&quo ...

最新文章

  1. 一个好用的开源在线时序图/波形图(Timing Diagram)绘制网站
  2. 使用Synchronized块同步方法
  3. Java16-day07【Map(概述、特点、功能、遍历)、HashMap集合练习、集合嵌套、Collections、模拟斗地主升级版】
  4. 应用多级缓存模式支撑海量读服务
  5. Unity SRP自定义渲染管线 -- 3.Lights
  6. 浅谈 maxMemory , totalMemory , freeMemory 和 OOM 与 native Heap
  7. 牛客练习赛71E-神奇的迷宫【点分治,NTT】
  8. java linkedhashset_java之LinkedHashSet
  9. openssl https证书
  10. 来了!小米9发布时间确定:2月20日见 为你而战
  11. Python三种方法统计4位自然数变为黑洞数6174所需次数分布
  12. 做人不能太心软,这三件事上,越狠心就越受益
  13. java高级类型_Java第四章高级类属性一
  14. 微信小程序制作家庭记账本之一
  15. visio2013安装包及破解工具KMS
  16. 计算机用户名中文改为英文,win10系统怎么更改user用户名中文为英文
  17. M个苹果放N个篮子,篮子可以为空,有多少种放法?
  18. 高德地图大头针功能_iOS高德地图之自定义大头针and泡泡view
  19. 技嘉服务器准系统epyc,技嘉为AMD霄龙处理器推出ATX主板 针对AMD EPYC
  20. 桌面右下角任务栏图标消失问题解决

热门文章

  1. input输入框事件流程变化
  2. 【技术向】VOT中的EAO是如何计算的
  3. LeetCode 2108. 找出数组中的第一个回文字符串
  4. JAVA 关于图片上传的代码
  5. java算法--冒泡算法
  6. MySQL 不等于null或空格
  7. 关于访问自己服务器显示无法访问此网站拒绝了我们的连接请求。
  8. linux .mo文件,MO 文件扩展名: 它是什么以及如何打开它?
  9. 导出开发板根文件系统rootfs
  10. Epoch, Batch, Iteration 区别