用Python入门不明觉厉的马尔可夫链蒙特卡罗(附案例代码)

足球大数据实战:如何用Python+MySQL构建赔率水位分析系统(附完整代码) 本文详细介绍了如何利用Python和MySQL构建足球赔率水位分析系统,涵盖数据采集、存储优化、凯利指数计算及可视化分析全流程。通过实战案例展示英超让球盘分析,系统在实盘测试中实现11.2%的年化ROI,为足球大数据分析提供专业解决方案。 阅读详情

这里写图片描述

大数据文摘作品

编译:Niki、张南星、Shan LIU、Aileen


这篇文章让小白也能读懂什么是人们常说的Markov Chain Monte Carlo。


在过去几个月里,我在数据科学的世界里反复遇到一个词:马尔可夫链蒙特卡洛(Markov Chain Monte Carlo , MCMC)。在我的研究室、podcast和文章里,每每遇到这个词我都会“不明觉厉”地点点头,觉得这个算法听起来很酷,但每次听人提起也只是有个模模糊糊的概念。


我屡次尝试学习MCMC和贝叶斯推论,而一拿起书,又很快就放弃了。无奈之下,我选择了学习任何新东西最佳的方法:应用到一个实际问题中。


通过使用一些我曾试图分析的睡眠数据和一本实操类的、基于应用教学的书(《写给开发者的贝叶斯方法》,我最终通过一个实际项目搞明白了MCMC。


《写给开发者的贝叶斯方法》

https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers


和学习其他东西一样,当我把这些技术性的概念应用于一个实际问题中而不是单纯地通过看书去了解这些抽象概念,我更容易理解这些知识,并且更享受学习的过程。


这篇文章介绍了马尔可夫链蒙特卡洛在Python中入门级的应用操作,这个实际应用最终也使我学会使用这个强大的建模分析工具。


此项目全部的代码和数据:

https://github.com/WillKoehrsen/ai-projects/blob/master/bayesian/bayesian_inference.ipynb


这篇文章侧重于应用和结果,因此很多知识点只会粗浅的介绍,但对于那些想了解更多知识的读者,在文章也尝试提供了一些学习链接。


案例简介


我的智能手环在我入睡和起床时会根据心率和运动进行记录。它不是100%准确的,但现实世界中的数据永远不可能是完美的,不过我们依然可以运用正确的模型从这些噪声数据提取出有价值的信息。


典型睡眠数据


这个项目的目的在于运用睡眠数据建立一个能够确立睡眠相对于时间的后验分布模型。由于时间是个连续变量,我们无法知道后验分布的具体表达式,因此我们转向能够近似后验分布的算法,比如马尔可夫链蒙特卡洛(MCMC)。


选择一个概率分布


在我们开始MCMC之前,我们需要为睡眠的后验分布模型选择一个合适的函数。一种简单的做法是观察数据所呈现的图像。下图呈现了当我入睡时时间函数的数据分布。


睡眠数据


每个数据点用一个点来表示,点的密度展现了在固定时刻的观测个数。我的智能手表只记录我入睡的那个时刻,因此为了扩展数据,我在每分钟的两端添加了数据点。如果我的手表记录我在晚上10:05入睡,那么所有在此之前的时间点被记为0(醒着),所有在此之后的时间点记为1(睡着)。这样一来,原本大约60夜的观察量被扩展成11340个数据点。


可以看到我趋向于在10:00后几分钟入睡,但我们希望建立一个把从醒到入睡的转变用概率进行表达的模型。我们可以用一个简单的阶梯函数作为模型,在一个精确时间点从醒着(0)变到入睡(1),但这不能代表数据中的不确定性。


我不会每天在同一时间入睡,因此我们需要一个能够模拟出这个个渐变过程的函数来展现变化当中的差异性。在现有数据下最好的选择是logistic函数,在0到1之前平滑地移动。下面这个公式是睡眠状态相对时间的概率分布,也是一个logistic公式。

<

马尔可夫链:随机过程的数学建模及MATLAB实现 马尔可夫链起源于俄罗斯数学家安德雷·马尔可夫(Andrey Markov)在20世纪初的工作。他研究了一种特殊的随机过程,即下一个状态仅依赖于当前状态的过程。这种性质被称为马尔可夫性质(Markov Property),数学表达如下:$$$$其中,$X_t$ 表示随机过程在时刻 $t$ 的状态,$x_t$ 是一个可能的状态值。马尔可夫链是具有马尔可夫性质的随机过程。更具体地说,马尔可夫链是一个随机过程,其状态空间是离散的,并且在给定当前状态的情况下,未来状态的概率分布仅取决于当前状态。 阅读详情

相关推荐

python实战项目49:足彩开奖竞猜数据抓取

其中,clientCode为固定值,matchId可以在上一步中获取的响应中得到。由于获取到的是json数据,直接使用python中字典的获取数据的方法即可。打开开发者工具,刷新页面,找到数据接口为xhr数据包。

lyccomcn的博客 1209

树莓派国内镜像源一键配置指南

本文提供树莓派国内镜像源一键配置指南,解决默认国外源访问缓慢问题。通过自动检测系统版本并支持清华、阿里云、中科大等主流镜像站选择,大幅提升软件更新与安装速度。包含详细的手动配置方法和常见问题排查,帮助用户快速完成树莓派换源优化。

tequila的博客 1376

Zabbix在Ubuntu 22.04上的性能优化与监控实战:从基础安装到高级配置

本文详细介绍了在Ubuntu 22.04系统上部署和优化Zabbix监控系统的完整流程,从基础安装到高级配置。内容包括MySQL数据库设置、Zabbix服务器与Web前端优化、性能调优策略以及实战监控场景应用,帮助用户构建高效的企业级监控解决方案。

sss66的博客 895

SAP S4HANA F-02报错:更正统一日记账分类账的定制设置

消息号 FINS_ACDOC_CUST201 使用FINS_CUST_CONS_CHK_P去检查公司代码和分类账的设置 提示:过账期间变式为空(分类账 E1/公司代码 7500) 检查了表FINSC_LD_CMP 显示有分类账未分配过账期间变式 解决:后台配置定义分类账和货币类型的设置把过账变式维护下 路径:财务会计→财务会计全局设置→分类账→分类账→定义分类账和货币类型的设置 选中需要维护的分类账双击左侧的“分类账的公司代码设置”,找到对应的公司代码维护上即可。

qq_45068743的博客 6448

RK3568(buildroot)利用squashfs+overlay实现嵌入式系统高可靠存储方案

本文详细介绍了在RK3568嵌入式平台上,基于Buildroot系统,利用squashfs只读根文件系统与overlayfs可写层相结合的高可靠存储方案。该方案能有效防止设备意外断电导致的系统文件损坏,通过内核配置、启动脚本编写及镜像制作,实现系统核心的只读保护与用户数据的持久化分离,显著提升嵌入式设备的现场稳定性。

weixin_29189381的博客 547

期货套利策略(二)

接上一篇期货套利策略,随着对期货套利策略的深入了解,我发现套利策略不是那么好做的。下面将会讲碰到的一些问题。 上一篇文章中没有考虑滑点的问题,这里我们把滑点问题考虑进去。这里先说一些天勤api的买入点,天琴的买入点是当前K线的收盘价。碰到数据传输问题,还有计算等各方面问题,实际情况是无法在当前K线的收盘价买入的。这里我们把这方面问题考虑进去,利用api.wait_update()调到下一个k线数据...

qq_31611005的博客 1712

端侧视觉赋能手游自动化:YOLOv8+NCNN实现低风险挂机与广告拦截

本文提出一种基于端侧AI的移动游戏自动化解决方案,采用YOLOv8目标检测和NCNN推理框架,结合AutoJS实现"感知-决策-执行"闭环。方案通过轻量化模型训练、多分辨率适配和行为拟态优化,解决了传统脚本的适配性和风控问题。关键技术包括:构建游戏专属数据集、模型量化优化、广告拦截和挂机功能实现,具有本地运行、安全稳定等特点,为个人开发者提供了一套完整的自动化开发框架。

milk416666的博客 1263

Android Framework AudioFlinge 面试题及参考答案

请解释什么是 AudioFlinger? AudioFlinger 是 Android 音频系统中的一个关键服务。它位于 Android 系统的中间层,是连接上层应用和底层音频硬件驱动的重要桥梁。从功能角度来讲,它主要负责音频数据的混合(Mix)以及输出(Output)。 当多个应用程序同时播放音频时,比如一个音乐播放器在播放歌曲,同时手机的闹铃响起,AudioFlinger 就会发挥它的混合功能。它会把这些不同来源的音频数据按照一定的规则和算法混合在一起。这种混合并不是简单的相加,而是要考

大模型大数据攻城狮的专栏 1576

“软开关”硬技术!ZVS和ZCS到底谁更牛?看完这个例子你就懂了!

❌ ZVS 和 ZCS 是万能的?→ 不,它们都有实现条件,谐振参数选不好照样硬拐弯!❌ 只要有谐振就一定ZVS?→ 不,一定要设计合适的死区时间和负载条件才行!ZVS 是让电压先“冷静”,ZCS 是让电流先“退场”。一个是开门不撞墙,一个是关门不甩门。懂了它们,功率设计就是在跳华尔兹而不是打架!💃🔌。

weixin_43199439的博客 1237

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: 手把手:四色猜想、七桥问题…程序员眼里的图论,了解下?
下一篇: AI角 | 把吴恩达深度学习系列课程画出来,这有份诚意满满的笔记求查收
BigDataDigest
博客等级 码龄9年 448粉丝 500原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值