关于马尔可夫链模型,详细请参考马尔可夫链模型
这里我使用的马尔科夫链模型的状态转移矩阵是:

股市的概率分布为[0.4, 0.3, 0.3], 即40%概率的牛市,30%概率的熊盘与30%的横盘。
代码实现

import numpy as npP = np.matrix([[0.7, 0.2, 0.1], [0.25, 0.35, 0.4], [0.45, 0.05, 0.5]])
p = np.matrix([[0.4, 0.3, 0.3]])
for i in range(1, 101):p = p * Pprint(f"输出第{i}次结果:")print(p)

运行结果
输出第1次结果:
[[0.49 0.2 0.31]]
输出第2次结果:
[[0.5325 0.1835 0.284 ]]
输出第3次结果:
[[0.546425 0.184925 0.26865 ]]
输出第4次结果:
[[0.54962125 0.18744125 0.2629375 ]]
输出第5次结果:
[[0.54991706 0.18867556 0.26140737]]
输出第6次结果:
[[0.54974415 0.18909023 0.26116562]]
输出第7次结果:
[[0.54961799 0.18918869 0.26119332]]
输出第8次结果:
[[0.54956676 0.18919931 0.26123393]]
输出第9次结果:
[[0.54955183 0.18919481 0.26125337]]
输出第10次结果:
[[0.549549 0.18919122 0.26125979]]
输出第11次结果:
[[0.54954901 0.18918971 0.26126128]]
输出第12次结果:
[[0.54954931 0.18918927 0.26126143]]
输出第13次结果:
[[0.54954947 0.18918918 0.26126135]]
输出第14次结果:
[[0.54954953 0.18918917 0.26126129]]
输出第15次结果:
[[0.54954955 0.18918918 0.26126127]]
输出第16次结果: ****
[[0.54954955 0.18918919 0.26126126]]
输出第17次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第18次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第19次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第20次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第21次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第22次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第23次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第24次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第25次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第26次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第27次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第28次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第29次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第30次结果:
[[0.54954955 0.18918919 0.26126126]]
。。。
输出第87次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第88次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第89次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第90次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第91次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第92次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第93次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第94次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第95次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第96次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第97次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第98次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第99次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第100次结果:
[[0.54954955 0.18918919 0.26126126]]

从运行结果我们可以看出,1-16次运行结果各不相同,但第16次之后,结果都是[0.54954955 0.18918919 0.26126126],即54.954955%的牛市,18.918919%的熊市与26.126126%的横盘。这是巧合吗?其实并不是,换一个股市的概率分布,最终的结果还是54.954955%的牛市,18.918919%的熊市与26.126126%的横盘。无论还多少次还是相同的结果。那么,将股市的概率分布换成马尔科夫链模型状态转移矩阵,结果又会如何呢?

import numpy as npP = np.matrix([[0.7, 0.2, 0.1], [0.25, 0.35, 0.4], [0.45, 0.05, 0.5]])
for i in range(1, 31):P = P * Pprint(f"输出第{i}次结果:")print(P)

运行结果
输出第1次结果:
[[0.585 0.215 0.2 ]
[0.4425 0.1925 0.365 ]
[0.5525 0.1325 0.315 ]]
输出第2次结果:
[[0.5478625 0.1936625 0.258475 ]
[0.54570625 0.18055625 0.2737375 ]
[0.55588125 0.18603125 0.2580875 ]]
输出第3次结果:
[[0.54951756 0.18915182 0.26133061]
[0.54966821 0.18920713 0.26112467]
[0.54953091 0.1892548 0.26121429]]
输出第4次结果: **********
[[0.54954954 0.18918919 0.26126126]
[0.54954955 0.18918918 0.26126127]
[0.54954956 0.18918919 0.26126125]]
输出第5次结果:
[[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]]
输出第6次结果:
[[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]]
输出第7次结果:
[[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]]
。。。。。。
输出第25次结果:
[[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]]
输出第26次结果:
[[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]]
输出第27次结果:
[[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]]
输出第28次结果:
[[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]]
输出第29次结果:
[[0.54954954 0.18918919 0.26126126]
[0.54954954 0.18918919 0.26126126]
[0.54954954 0.18918919 0.26126126]]
输出第30次结果:
[[0.54954954 0.18918919 0.26126126]
[0.54954954 0.18918919 0.26126126]
[0.54954954 0.18918919 0.26126126]]

从运行结果我们可以看出,第四次是一个分水岭,而且最后的结果和之前的是一致的。(注意:代码中的循环次数少了许多,因为循环次数过多,最后的结果会越来越小,直至变成全为0的矩阵。)

马尔科夫链模型状态转移矩阵相关推荐

  1. MCMC(二)马尔科夫链

    在MCMC(一)蒙特卡罗方法中,我们讲到了如何用蒙特卡罗方法来随机模拟求解一些复杂的连续积分或者离散求和的方法,但是这个方法需要得到对应的概率分布的样本集,而想得到这样的样本集很困难.因此我们需要本篇 ...

  2. 蒙特卡罗 马尔科夫链 与Gibbs采样

    这几个概念看了挺多遍都还是含混不清,最近看了几篇博客,才算大致理解了一点点皮毛,所以来总结一下. MCMC概述 从名字我们可以看出,MCMC由两个MC组成,即蒙特卡罗方法(Monte Carlo Si ...

  3. python:马尔科夫链

    参考学习网址:MCMC(二)马尔科夫链 - 刘建平Pinard - 博客园 (cnblogs.com) 目录 一.什么是马尔科夫链 1.介绍 2.基本概念 3.马尔科夫链模型分析 二.马尔科夫链模型状 ...

  4. 36.Python实现马尔科夫链

    学习参考网址:MCMC(二)马尔科夫链 - 刘建平Pinard - 博客园 目录 1.问题描述 2.马尔科夫链模型状态转移矩阵的性质 3.代码实例(一) 3.1运行结果 4.代码实例(2) 4.1运行 ...

  5. MCMC学习笔记-马尔科夫链概述

    参考文章:MCMC(二)马尔科夫链 - 刘建平Pinard - 博客园 写给小白看的马尔科夫链(Markov Chain)最佳入门教程_许进进的博客-CSDN博客_markov链 目录 1.马尔科夫链 ...

  6. MCMC(一):蒙特卡罗方法和马尔科夫链

    作为一种随机采样方法,马尔科夫链蒙特卡罗(Markov Chain Monte Carlo,以下简称MCMC)在机器学习,深度学习以及自然语言处理等领域都有广泛的应用,是很多复杂算法求解的基础.比如分 ...

  7. 【有限马尔科夫链状态分解+Kosaraju 算法】基于Kosaraju 算法和可达矩阵的有限马尔科夫链状态分解

    有限马尔科夫链状态分解+Kosaraju 算法 1 实验内容 2 理论基础 3 题目分析 4 按常返性和互通性对状态空间进行分解算法流程 4.1 强连通性和强连通分量 4.2 基于有向图 Kosara ...

  8. 第十四课.马尔科夫链

    目录 马尔科夫链 马尔科夫链的平稳分布 马尔科夫链进入稳态的转移过程 马尔科夫链稳态的意义 稳态判定:细致平稳条件 马尔科夫链 随机过程指的是一个随机变量序列:{Xt}\left\{X_{t}\rig ...

  9. 机器学习算法 10 —— HMM模型(马尔科夫链、前向后向算法、维特比算法解码、hmmlearn)

    文章目录 系列文章 隐马尔科夫模型 HMM 1 马尔科夫链 1.1 简介 1.2 经典举例 2 HMM简介 2.1 简单案例 2.2 案例进阶 问题二解决 问题一解决 问题三解决 3 HMM模型基础 ...

最新文章

  1. iOS 代理反向传值
  2. 浅谈稳压二极管的选用和使用条件--摘自:工程师飞燕
  3. Dragonboard 410c fastboot刷入android
  4. mysql数据库移植
  5. 专心写即时通讯软件争取CSDN认证专家
  6. webpack Plugin常用 optimization splitChunks UglifyJsPlugin sourceMap
  7. 查询成绩最好的前两名_官宣!CPA考试成绩查询时间+合格标准+查询入口+成绩复核!注会考生查分前不看亏大了...
  8. 苹果紧急修复远程漏洞,影响数十亿设备
  9. 火山图 多个样本、_statTarget-基于QC样本的代谢组学数据校正
  10. 华为延期,三星下架,讲讲折叠屏为什么这么难
  11. 解决pre-commit hook failed (add --no-verify to bypass)的问题
  12. Windows和Linux平台上实现Word转PDF
  13. 机器狗变种、磁碟机查杀方法及注意事项
  14. 如何创建一个原始Mac OS镜像
  15. spring retry, guava retrying 的整合-sisyphus java 重试
  16. 海蜘蛛软路由linux安装教程,软路由安装设置教程【详细步骤】-太平洋IT百科
  17. 计算机科学读ms还是phd好,美研申请中怎样判断适合读硕士(MS)还是博士(PhD)?
  18. 图像处理——gamma矫正
  19. nacos registry, gateway register failed java.lang.IllegalArgumentException: no server available
  20. 【项目经验】最新最全ElasticSearch操作详解

热门文章

  1. 漫画:什么是Linux管道
  2. KingbaseES V8R6 ksql 关闭自动提交
  3. JVM成神之路-Java内存模型(JMM)
  4. 麦子学院机器学习基础(5)-(神经网络NN))(python)
  5. 海康存储服务器虚拟机,unraid 安装虚拟机攻略
  6. 洛谷 P1008 三连击
  7. C语言之结构体就这样被攻克了!(绝对值得收藏的文章)
  8. 使用USB对两个电脑进行串口文件传输
  9. Execl中进行时间相加,对时间求和的公式:
  10. manjaro折腾记录