当前位置: 首页 > news >正文

8.(Python数模)马尔科夫链预测

Python实现马尔科夫链预测

马尔科夫链原理

马尔科夫链是一种进行预测的方法,常用于系统未来时刻情况只和现在有关,而与过去无关
用下面这个例子来讲述马尔科夫链。
在这里插入图片描述
如何预测下一时刻计算机发生故障的概率?
当前状态只存在0(故障状态)和1(正常状态)两种,每种状态下各存在两个未来状态(00,01,11,10),那么统计出这整个序列中00,01,11,10出现的次数。即求得转移矩阵
在这里插入图片描述
进而求得转移概率矩阵
在这里插入图片描述
如果当前是0,那么下一个是0的概率为30.77%,下一步为1的概率为69.23%。
对当前数据,最后一个为1,那么预测下一步,有74.3%的概率不发生故障。

上面的方法不仅限于两个类别0和1,多类别也是可以预测的
比如
在这里插入图片描述
str = “4321431123212344331113321222442323112431”
用同样的方法计算转移概率矩阵
在这里插入图片描述

问题描述

在这里插入图片描述

源代码

计算转移矩阵部分

def str_count(str, sub):count = 0for i in range(0, len(str) - 1):if str[i:i+2] == sub:count = count + 1return countdef data_to_matrix():str = "1110010011111110011110111111001111111110001101101111011011010111101110111101111110011011111100111"count00 = str_count(str, "00")count01 = str_count(str, "01")count10 = str_count(str, "10")count11 = str_count(str, "11")print("count00:", count00)print("count01:", count01)print("count10:", count10)print("count11:", count11)
if __name__ == '__main__':data_to_matrix()

问题解决部分

import numpy as np
p1 = np.array([0.2, 0.4, 0.4])
p = np.array([[0.8, 0.1, 0.1],[0.5, 0.1, 0.4],[0.5, 0.3,0.2]
])
p3 = np.linalg.matrix_power(p, 3)
p4 = np.dot(p1, p3)
print(p4)

1、np.linalg.matrix_power(p, 3) 是一个用来计算矩阵 p 的 3 次幂的函数。它使用 NumPy 库中的 linalg 子模块来执行矩阵乘法运算。这个函数的返回值是将矩阵 p 自乘 3 次后得到的新矩阵。

2、dot指的是两个向量之间的点积运算

结果

在这里插入图片描述在这里插入图片描述

参考博文

数学建模入门-python实现简单的马尔可夫链
马尔科夫链预测,Python实现

http://www.lryc.cn/news/152758.html

相关文章:

  • 什么是浏览器缓存(browser caching)?如何使用HTTP头来控制缓存?
  • 谁需要了解学习RPA?什么地方可以使用RPA?
  • Qt各个版本下载及安装教程(离线和非离线安装)
  • 使用爬虫代码获得深度学习目标检测或者语义分割中的图片。
  • 代码随想录算法训练营第39天 | ● 62.不同路径 ● 63. 不同路径II
  • 《网站建设:从规划到发布的全过程详解》
  • 1分钟实现 CLIP + Annoy + Gradio 文搜图+图搜图 系统
  • 用树形dp+状压维护树上操作的计数问题:0902T3
  • 【python爬虫】批量识别pdf中的英文,自动翻译成中文上
  • Android笔记--Hilt
  • Oracle常用权限处理
  • Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作
  • r 安装源码包 安装本地r包
  • webservice调用对接第三方系统
  • 实现不同局域网文件共享的解决方案:使用Python自带HTTP服务和端口映射
  • [Android 四大组件] --- Activity
  • shell中for循环输出1-6
  • docker 04.更加重要的命令
  • 【理解线性代数】(二)线性运算和线性空间
  • 专业的视觉特效处理包,FxFactory 8 Pro for Mac助您打造精彩视频
  • Darshan日志分析
  • python中如何不修改字符串的前提,使其对大小写字母不敏感
  • 聊聊Http服务化改造实践
  • docker打包部署
  • 解密Spring MVC异常处理:从局部到全局,打造稳固系统的关键步骤
  • Three.js添加阴影和简单后期处理
  • git submodule 子模块的基本使用
  • 四层负载均衡的NAT模型与DR模型推导 | 京东物流技术团队
  • 【vue】vue前端实现随机验证码(数字、字母混合)功能
  • 使用Visual Studio 2022实现透明按钮和标签、POPUP样式窗体的一种工业系统的UI例程