当前位置: 首页 > 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/153262.html

相关文章:

  • Leetcode1006笨阶乘
  • 阻塞非阻塞IO(BIO和NIO),IO多路复用
  • HTTP协议初识·中篇
  • 数学建模:拟合算法
  • 计算机网络-笔记-汇总
  • STM32定时器定时及其应用
  • (牛客) 游游的字符重排(next_permutation的使用)
  • RTPEngine 通过 HTTP 获取指标的方式
  • 聚鑫数藏平台——引领数字资产管理新风向
  • web3j solidity 转java
  • uniapp项目实战系列(3):底部导航栏与头部导航栏的配置
  • Jwt工具类
  • 计算机网络-笔记-第五章-运输层
  • java-参数传递机制
  • Python编程练习与解答 练习96:字符串是否表示整数
  • Scala的特质trait与java的interface接口的区别,以及Scala特质的自身类型和依赖注入
  • 检查js中的字符串是否可以成为回文
  • 时序预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络时间序列预测(风电功率预测)
  • WebSocket--技术文档--基本概念--《快速了解WebSocket协议》
  • flutter报错-cmdline-tools component is missing
  • torch.bmm功能解读
  • 如何使用Puppeteer进行金融数据抓取和预测
  • Linux下 Socket服务器和客户端文件互传
  • Nginx详解 第五部分:Ngnix反向代理(负载均衡 动静分离 缓存 透传 )
  • 中国行政区域带坐标经纬度sql文件及地点获取经纬度方法
  • [国产MCU]-W801开发实例-WiFi网络扫描
  • SpringBoot使用kafka事务-消费者方
  • C# 实现PictureBox从指定的文件夹内进行翻页操作
  • Eureka 注册中心的使用
  • vue3 组件通信方式