机器学习实战2--蒙特卡洛方法与Q-Q图(2022/10/12)
蒙特卡洛方法与Q-Q图
文章目录
- 蒙特卡洛方法与Q-Q图
- 蒙特卡洛方法
- 蒙特卡洛的定义和基本步骤
- 一些常用的概率论相关函数
- 使用蒙特卡洛验证大数定理
- Q-Q图
- Q-Q图的定义及用途
import numpy as np
from numpy.linalg import inv,eig
import matplotlib.pyplot as plt
import pandas as pd
from scipy.stats import norm
蒙特卡洛方法
蒙特卡洛的定义和基本步骤
蒙特卡洛是一个赌场的名字,我对他的理解大概是这一个使用随机数暴力求解的算法。其步骤主要为以下三个:
- 构造或描述概率过程
- 实现从已知概率分布抽样
- 建立各种估计量。
一些常用的概率论相关函数
- 使用
np.random.seed()
可以设置随机数种子,随机数种子有三位数的int,设置随机数种子后,每次生成的随机数均相同,不填入种子,则生成的随机数不同。 - 使用
np.random.normal(均值, 标准差, 样本个数)
生成服从N(均值,标准差)N(均值,标准差)N(均值,标准差)的确定个数的样本。 - 使用
np.random.uniform(下界, 上界, n)
生成服从均匀分布U(a,b)U(a,b)U(a,b)的确定个数的样本。 - 使用
np.random.binomial(n, p, n)
生成服从二项分布b(n,p)b(n,p)b(n,p)的确定个数的样本。 - 使用
np.random.exponential(1/lambda)
: 指数分布,生成服从指数分布EXP(1λ)EXP({1\over{\lambda}})EXP(λ1)的确定个数的样本。 - 使用
np.random.poisson(lam)
:生成服从参数λ\lambdaλ确定的泊松分布的确定个数的样本。
mu = 0;sigma = 1;n=10000
x = np.random.normal(mu,sigma,n)
# x =np.random.uniform(2,4,n)
plt.hist(x,bins=300)
plt.axvline(x=mu,color = "red",label="u")
plt.legend()
<matplotlib.legend.Legend at 0x2bd3b09ba00>
使用蒙特卡洛验证大数定理
- 生成一个确定的分布,我这里使用均匀分布
- 每次抽样,计算均值,
- 画均值图像(大数定理表明服从正态分布)
- 与总体均值比对
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #中文标签
a = 2;b = 5;n = 10000 #抽样个数
e = (a+b)/2 #计算得出的总体均值
E = list() #样本均值列表
mean_e = list() # 样本均值的均值存储列表
for i in range(1000):x = np.random.uniform(a,b,n) #抽10000个样本E.append(np.mean(x)) #储存每一次x的均值mean_e.append(np.mean(E)) #储存每一次均值的均值
plt.figure("样本均值的分布")
plt.hist(E,bins = 100)
plt.axvline(x=e,color = "red")
plt.title("均值的分布情况")
Text(0.5, 1.0, ‘均值的分布情况’)
由大数定理可以得知,样本的均值是总体均值的无偏估计,即 E(E(Xˉ))=μE( E(\bar{X}) ) = \muE(E(Xˉ))=μ
即当抽样检验的次数越多时,样本均值的数学期望(均值)会越来越接近总体均值
plt.figure(112)
plt.title("均值的期望趋势")
plt.scatter(range(1000),mean_e,label = "均值的期望")
plt.axhline(y=e,color = "red",label = "总体均值")
plt.legend()
<matplotlib.legend.Legend at 0x2bd3d5731f0>
Q-Q图
Q-Q图的定义及用途
- Q-Q图的横纵坐标均为两个分布的分位数,用于比较两个分布是否一致的情况,若一致,则两个分位数的分位点是相同的。则此时的Q-Q图应是一条直线,若分布完全相同则为 y=xy=xy=x 的直线。
- 若两个分布相同但参数不同,则呈现为一条直线,如当横轴分布为标准正态分布N(0,1)N(0,1)N(0,1) ,纵轴为正态分布N(μ,σ)N(\mu,\sigma)N(μ,σ)时,直线斜率为σ\sigmaσ,截距μ\muμ。
- 值得注意的是:如果我们将一个某分布的样本直接根据他们的取值从小到大排列,得到的就是其分位数的函数,因为从小到大排列时,此时函数自变量为个数(即如1%个数的样本),因变量为这1%样本对应的上限值,也就是分位数
from math import sqrt
n = 10000
a = 2;b=3
x = np.random.normal(0,1,n)
y = (x+a)/b #生成(x+a)/b的分布,
y.sort() # 将这些个体从小到大排列的话,便是在横坐标函数的横坐标,即分位数。
prob = (np.arange(n)+1/2)/n #生成[0,1]间连续分布的n个的采样值(概率值)
q = norm.ppf(prob,a/b,1/b) #ppf正态分布求解分位数的函数,第一个参数是对应的概率值,所以使用[0,1]均匀分布的函数
# y 是需要我们验证的分布,因为其是由x变换求得的,q是由a/b、1/b生成的,是用来对比的
plt.scatter(x=q,y=y,color='red',label = "理想计算值分位数散点")
plt.plot(y,y,color = 'blue',label = "y=x参考线")
plt.legend()
plt.title("Q-Q图")
plt.xlabel("理想的分布")
plt.ylabel("实际的散点分布")
Text(0, 0.5, ‘实际的散点分布’)
可以看出 y=x+aby={x+a\over{b}}y=bx+a 服从N(ab,1b)N({a\over{b}},{1\over{b}})N(ba,b1),
符合我们的计算 E(y)=E(xb)+E(ab)=0+abE(y)= E({x\over{b}})+E({a\over{b}})=0+{a\over{b}}E(y)=E(bx)+E(ba)=0+ba
D(y)=D(xb)+D(ab)=1b2∗1+0=1b2==>σ=1bD(y) = D({x\over{b}})+D({a\over{b}}) = {1\over{b^2}}*1 + 0 = {1\over{b^2}} ==> \sigma = {1\over{b}}D(y)=D(bx)+D(ba)=b21∗1+0=b21==>σ=b1
jupyter源文件在此处
机器学习实战2--蒙特卡洛方法与Q-Q图(2022/10/12)相关推荐
- 机器学习笔记马尔可夫链蒙特卡洛方法(二)马尔可夫链与平稳分布
机器学习笔记之马尔可夫链蒙特卡洛方法--马尔可夫链与平稳分布 引言 回顾:蒙特卡洛方法 马尔可夫链与平稳分布 马尔可夫链 平稳分布 细致平衡 关于平稳分布的补充 马尔可夫链的本质 平稳分布的收敛性证明 ...
- 机器学习day12 机器学习实战adaboost集成方法与重新进行疝马病的预测
今天终于完成了分类器的学习,SVM基本不怎么会,很是头疼,先放一下吧,有机会问问大神讲解一下.接下来的几天进行监督学习回归部分的学习,先看看adaboost的理解. 我们再决定一个重要的事情时,往往不 ...
- 机器学习笔记之马尔可夫链蒙特卡洛方法(三)MH采样算法
机器学习笔记之马尔可夫链蒙特卡洛方法--MH采样算法 引言 回顾:马尔可夫链与平稳分布 马尔可夫链 平稳分布 MH采样算法 采样思路 MH采样算法过程 引言 上一节介绍了马尔可夫链(Markov Ch ...
- 机器学习笔记之马尔可夫链蒙特卡洛方法(四)吉布斯采样
机器学习笔记之马尔可夫链蒙特卡洛方法--吉布斯采样 引言 回顾:MH采样算法 基于马尔可夫链的采样方式 细致平衡原则与接收率 MH采样算法的弊端 吉布斯采样方法 吉布斯采样的采样过程 吉布斯采样的推导 ...
- 《机器学习实战》笔记(04):基于概率论的分类方法 - 朴素贝叶斯分类
基于概率论的分类方法:朴素贝叶斯分类 Naive Bayesian classification 这大节内容源于带你理解朴素贝叶斯分类算法,并非源于<机器学习实战>.个人认为<机器学 ...
- 《机器学习实战》学习笔记(四):基于概率论的分类方法 - 朴素贝叶斯
欢迎关注WX公众号:[程序员管小亮] [机器学习]<机器学习实战>读书笔记及代码 总目录 https://blog.csdn.net/TeFuirnever/article/details ...
- 统计学方法机器学习实战(二) K近邻算法
目录 一.前言: 二.理论难点: 距离度量: 欧式距离: 三.数据可视化 四.数据归一化: 五.代码实践: 理论补充 实验一: 海伦约会 实验二 使用sklearn实现knn 六.总结 1.kNN算法 ...
- Python机器学习实战:掌握这四个特征选择方法,提升模型预测性能
机器学习实战:这里没有艰深晦涩的数学理论,我们将用简单的案例和大量的示例代码,向大家介绍机器学习的核心概念.我们的目标是教会大家用Python构建机器学习模型,解决现实世界的难题. 当数据集包含很多特 ...
- 机器学习实战之基于概率论的分类方法:朴素贝叶斯
基于概率论的分类方法:朴素贝叶斯 引入 1 基于贝叶斯决策理论的分类方法 1.1 条件概率 1.2 使用条件概率来分类 1.3 使用朴素贝叶斯进行文档分类 2 使用Python进行文本分类 2.1 准 ...
最新文章
- 一图读懂《“十四五”软件和信息技术服务业发展规划》
- Visual Studio的一些快捷键(转载)
- for java_Java For循环
- Docker网络配置进阶
- Swagger UI
- BugkuCTF-Misc:come_game
- 【转载保存】hadoop学习之wordcount运行错误处理
- oracle创建多个游标,Oracle——游标的创建和使用
- 疫情蔓延让这项CV技术突然火了,盘点开源代码
- another app is currently holding the yum lock;waiting for it to exit...
- Sublime Text4添加配色主题
- pandas python groupby_python – pandas groupby方法实际上是如何工作的?
- 手动配置gradle
- 未能创建可接受的游标。
- java模板和回调机制学习总结
- vector容器v1、v2之间相互赋值的三种方法及易错点详解
- Linux系统CentOS7破解密码
- 七、入门python第七课
- 树莓派Linux开机使用root自动运行python的pyqt文件
- 研究生院校推荐——复旦大学工研院
热门文章
- Ubuntu 16.04 安装pyk4a
- Android 意图(Intent)
- 不敢说最快!但是这款CRAS C700绝对是我们见过最漂亮的SSD
- 版权概念小结(音乐方面)
- vs读取txt文件 中文乱码
- Java学习的第一道垲
- 《版权与版权贸易》第二章 版权的内容
- 任何物体都在以光速运动,你能理解这一认识吗?
- 计算机主机通常包括( ) a运算器,通常我们把( )称为计算机主机. A. 运算器 B. 运算器.控制器和内存 C. 运算器和控制器 D. 运算器和内存...
- 基于vue的todolist案例