背景

给出读《艾伯特贝叶斯思维:统计建模的Python学习法.pdf》的时候,写的代码,以面向过程的方式给出。
本章彩弹问题,求似然度的时候,假设已知隐藏点时,射手等概率从各个角度射击。

代码

导入常见模块

# %load "E:\桌面space\临时数据\python\个人自定义模块\ImportFile.py"
# Standard Scientific Import
import numpy as np
import scipy as sp
import pandas as pd
import matplotlib as mpl
from matplotlib import pyplot as plt
from matplotlib.pyplot import plot as plot
import sklearn
import seaborn as sns
import sys
import patsy# 个人代码测试路径
sys.path.append(r"C:\Users\Administrator\PycharmProjects\QY_TS_Quant")
from QY_plot import *plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
sns.set(font='SimHei',font_scale=1.25,style="ticks",rc={"xtick.major.size": 3, "ytick.major.size": 3})# 解决Seaborn中文显示问题
# Jupyter 默认设置
%matplotlib inline
%config InlineBackend.figure_format="retina"
%config InlineBackend.rc = {"figure.figsize": (7.5,4.5)}
# 多列输出
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

中间函数

from functools import reduce
import operator
# 假设在alpha,beta的射手,随机等概率可以往各个方向设计
def StrafingSpeed(alpha, beta, x):return (np.square(beta)+np.square(alpha-x))/beta
def normlize(x):return x/np.sum(x)
def MakePmf(alpha, beta, w=30):pmf = list(map(lambda v:1./ StrafingSpeed(alpha, beta, v), np.arange(w+1)))return normlize(pmf)
def likehood(AX, AY, x, w=30):AZS = reduce(operator.add, map(lambda v:1./StrafingSpeed(AX, AY, v),np.arange(w+1)))AZ =  1./StrafingSpeed(AX, AY, x)return  AZ/AZS
# 围场宽30, 长50
w = 30
h = 50
# 宽边 中弹位置
x = [15, 16, 18, 21]

假定射击点时,墙上各点被击打概率

alpha = 10
beta = 10
plt.plot(MakePmf(alpha, beta))

二维射击点分布

def update(AP,x):if not np.isscalar(x):for xi in x:AP = update(AP, xi)else:AZ = likehood(AX, AY, x)AP = AP*AZAP /= AP.sum()return AP
X = np.arange(w+1)
Y = np.arange(1, h+1)
AX, AY = np.meshgrid(X, Y)
AP = np.ones_like(AX)
AP = update(AP, x)
plt.contour(AX,AY,AP,80)
plt.colorbar()

边缘分布

fig, axes = plt.subplots(1, 2, figsize=(18, 6))
axes[0].plot(AX[0], AP.sum(axis=0), label="alpha")
axes[1].plot(AY[:,0], AP.sum(axis=1), label="beta")
axes[0].legend();
axes[1].legend();
plt.suptitle("概率密度");

fig, axes = plt.subplots(1, 2, figsize=(18, 6))
axes[0].plot(AX[0], AP.sum(axis=0).cumsum(), label="alpha")
axes[1].plot(AY[:,0],AP.sum(axis=1).cumsum(), label="beta")
axes[0].legend();
axes[1].legend();
plt.suptitle("分布函数");

def confintv(cdf, p):t = []flag = 0for i,v in enumerate(cdf):if flag==0:if v>=0.5-p/2:t.append(i)flag=1elif flag==1:if v>=0.5+p/2:t.append(i)breakreturn t
# alpha的 50%置信区间
AX[0][confintv(AP.sum(axis=0).cumsum(), 0.5)]
array([14, 21])
# beta的50%置信区间
AY[:,1][confintv(AP.sum(axis=1).cumsum(), 0.5)]
array([ 5, 31])

置信区间

Acolor = np.zeros_like(AP)
s = np.argsort(AP.ravel())
for v in np.searchsorted(AP.flat[s].cumsum(),[0.25, 0.5, 0.75]):Acolor.flat[s[:v]] += 0.25
plt.imshow(Acolor, origin=True, aspect=0.5)

clf = plt.contour(AX, AY, Acolor,3);
plt.clabel(clf, fontsize=10);
plt.contourf(AX, AY, Acolor, 3);

面向过程给出《贝叶斯思维:统计建模的Python学习法》——二维彩球问题学习代码相关推荐

  1. 贝叶斯思维 统计建模的Python学习法pdf

    下载地址:网盘下载 编辑推荐 贝叶斯方法正在变得越来越常见与重要,但是却没有太多可以借鉴的资料来帮助初学者.基于Allen Downey在大学讲授的本科课程,本书的计算方法能帮助你获得一个良好的开端. ...

  2. 贝叶斯思维 统计建模的python_贝叶斯思维统计建模的Python学习法

    第1章 贝叶斯定理 1.1 条件概率 1.2 联合概率 1.3 曲奇饼问题 1.4 贝叶斯定理 1.5 历时诠释 1.6 M&M豆问题 1.7 Monty Hall难题 1.8 讨论 第2章 ...

  3. 机器视觉学习之--贝叶斯学习 MATLAB二维正态分布二维图

    1.贝叶斯介绍 我个人一直很喜欢算法一类的东西,在我看来算法是人类智慧的精华,其中蕴含着无与伦比的美感.而每次将学过的算法应用到实际中,并解决了实际问题后,那种快感更是我在其它地方体会不到的. 一直想 ...

  4. 《贝叶斯思维:统计建模的Python学习法》——2.5 封装框架

    本节书摘来异步社区<贝叶斯思维:统计建模的Python学习法>一书中的第2章,第2.5节,作者:[美]Allen B. Downey,更多章节内容可以访问云栖社区"异步社区&qu ...

  5. 贝叶斯思维:统计建模的Python学习法pdf

    下载地址:网盘下载 内容简介  · · · · · · 这本书帮助那些希望用数学工具解决实际问题的人们,仅有的要求可能就是懂一点概率知识和程序设计.而贝叶斯方法是一种常见的利用概率学知识去解决不确定性 ...

  6. 《贝叶斯思维:统计建模的Python学习法》——1.3 曲奇饼问题

    本节书摘来异步社区<贝叶斯思维:统计建模的Python学习法>一书中的第1章,第1.3节,作者:[美]Allen B. Downey,更多章节内容可以访问云栖社区"异步社区&qu ...

  7. 《贝叶斯思维:统计建模的Python学习法》一1.3 曲奇饼问题

    本节书摘来自异步社区<贝叶斯思维:统计建模的Python学习法>一书中的第1章,第1.3节,作者[美]Allen B. Downey,更多章节内容可以访问云栖社区"异步社区&qu ...

  8. 《贝叶斯思维:统计建模的Python学习法》——1.8 讨论

    本节书摘来异步社区<贝叶斯思维:统计建模的Python学习法>一书中的第1章,第1.8节,作者:[美]Allen B. Downey,更多章节内容可以访问云栖社区"异步社区&qu ...

  9. 《贝叶斯思维:统计建模的Python学习法》——2.3 贝叶斯框架

    本节书摘来异步社区<贝叶斯思维:统计建模的Python学习法>一书中的第2章,第2.3节,作者:[美]Allen B. Downey,更多章节内容可以访问云栖社区"异步社区&qu ...

最新文章

  1. 【 FPGA 】Vivado和ISE设计流程比较(重点是Vivado IDE)
  2. python工具是什么-python有什么好用的持续集成工具么?
  3. 【Android】ContentProvider和Uri详解
  4. php实战搭建博客,yii2项目实战-博客管理平台的搭建
  5. python爬虫常见报错_对Python爬虫常见工具总结,欢迎补充
  6. logstash grok切分nginx日志
  7. 关于net2.0里面新出现的类backgroundworker的应用
  8. Qt——菜单栏、工具栏、状态栏
  9. Spring Cloud随记----远程配置文件资源库的建立-涉及一些简单的git操作
  10. 用友U8.72 审核成品入库单时生成销售出库单 SQL触发器  --白波九道
  11. 支持firefox 3.6的onenote插件
  12. 房东房源管理小程序开发功能
  13. python里的jh是啥意思_JH是什么意思啊
  14. Vue表单输入绑定(元婴中期)
  15. Jetson Nano资料合集
  16. bootstrap check failure [2] of [2]: max virtual memory areas vm.max_map_count [65530] is too low, in
  17. 博基计划(4)---近红外光谱过程分析中基线漂移的主要来源
  18. 小程序原生swiper中bindtransition监听滑动效果
  19. 101/103/104规约应用典型问题例举【转】
  20. Office PPT中如何插入flash

热门文章

  1. buck电路boot电容短路和断路实测波形
  2. php 唱吧导出,深入曝光唱吧G2真的好吗?怎么样呢?良心点评实际情况
  3. buzz桌面服务器连接失败,Buzz 桌面 - 无与伦比的美丽,给「爱折腾」的你 - Android 应用 - 【最美应用】...
  4. IAR工程名修改方法
  5. TMS320F28388D 学习笔记1 建立工程
  6. Linux中的特殊符号-重定向符号
  7. These critical programs are missing or too old: python
  8. 错误解决:These dependencies were not found: core-js/modules/es.array.push.js
  9. 行业分析-斑马鱼市场现状及未来发展趋势
  10. revit管线标注怎么做?教你用建模助手快速解决!