从np.random.normal()到正态分布的拟合操作


Posted in Python onJune 02, 2021

先看伟大的高斯分布(Gaussian Distribution)的概率密度函数(probability density function):

从np.random.normal()到正态分布的拟合操作

对应于numpy中:

numpy.random.normal(loc=0.0, scale=1.0, size=None)

参数的意义为:

loc:float

此概率分布的均值(对应着整个分布的中心centre)

scale:float

此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)

size:int or tuple of ints

输出的shape,默认为None,只输出一个值

我们更经常会用到的np.random.randn(size)所谓标准正态分布从np.random.normal()到正态分布的拟合操作

对应于np.random.normal(loc=0, scale=1, size)。

采样(sampling)

# 从某一分布(由均值和标准差标识)中获得样本
mu, sigma = 0, .1
s = np.random.normal(loc=mu, scale=sigma, size=1000)

也可使用scipy库中的相关api(这里的类与函数更符合数理统计中的直觉):

import scipy.stats as st
mu, sigma = 0, .1
s = st.norm(mu, sigma).rvs(1000)

校验均值和方差:

>>> abs(mu < np.mean(s)) < .01
True
>>> abs(sigma-np.std(s, ddof=1)) < .01
True
            # ddof,delta degrees of freedom,表示自由度
            # 一般取1,表示无偏估计,

 

拟合

我们看使用matplotlib.pyplot便捷而强大的语法如何进行高斯分布的拟合:

import matplotlib.pyplot as plt
count, bins, _ = plt.hist(s, 30, normed=True)
        # normed是进行拟合的关键
        # count统计某一bin出现的次数,在Normed为True时,可能其值会略有不同
plt.plot(bins, 1./(np.sqrt(2*np.pi)*sigma)*np.exp(-(bins-mu)**2/(2*sigma**2), lw=2, c='r')
plt.show()

或者:

s_fit = np.linspace(s.min(), s.max())
plt.plot(s_fit, st.norm(mu, sigma).pdf(s_fit), lw=2, c='r')

从np.random.normal()到正态分布的拟合操作

np.random.normal()的含义及实例

这是个随机产生正态分布的函数。(normal 表正态)

先看一下官方解释:

有三个参数

loc:正态分布的均值,对应着这个分布的中心.代表下图的μ

scale:正态分布的标准差,对应分布的宽度,scale越大,正态分布的曲线 越矮胖,scale越小,曲线越高瘦。 代表下图的σ

size:你输入数据的shape,例子:

下面展示一些 内联代码片。

// An highlighted block
a=np.random.normal(0, 1, (2, 4))
print(a)
输出:
[[-0.29217334  0.41371571  1.26816017  0.46474676]
 [ 1.33271487  0.80162296  0.47974157 -1.49748788]]

看这个图直观些:

从np.random.normal()到正态分布的拟合操作

以下为官方文档:

从np.random.normal()到正态分布的拟合操作

从np.random.normal()到正态分布的拟合操作

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python获取本机外网ip的方法
Apr 15 Python
Python3中的2to3转换工具使用示例
Jun 12 Python
速记Python布尔值
Nov 09 Python
Django的Modelforms用法简介
Jul 27 Python
python Pandas如何对数据集随机抽样
Jul 29 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
May 23 Python
keras导入weights方式
Jun 12 Python
浅谈Python协程
Jun 17 Python
完美解决Pycharm中matplotlib画图中文乱码问题
Jan 11 Python
python保存大型 .mat 数据文件报错超出 IO 限制的操作
May 10 Python
Python实战之疫苗研发情况可视化
May 18 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 07 Python
golang特有程序结构入门教程
Jun 02 #Python
Python中的np.argmin()和np.argmax()函数用法
Jun 02 #Python
python之np.argmax()及对axis=0或者1的理解
Python import模块的缓存问题解决方案
Jun 02 #Python
Python3 类型标注支持操作
Jun 02 #Python
python 实现两个变量值进行交换的n种操作
聊聊Python中关于a=[[]]*3的反思
You might like
也谈截取首页新闻 - 范例
2006/10/09 PHP
PHP中PDO的错误处理
2011/09/04 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
2013/06/21 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
深入理解js promise chain
2016/05/05 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
详解在AngularJS的controller外部直接获取$scope
2017/06/02 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
在Django中限制已登录用户的访问的方法
2015/07/23 Python
python中使用序列的方法
2015/08/03 Python
Python中的浮点数原理与运算分析
2017/10/12 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
使用Django搭建一个基金模拟交易系统教程
2019/11/18 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
统计员岗位职责
2013/11/14 职场文书
打架检讨书500字
2014/01/29 职场文书
幼儿园家长安全责任书
2014/07/22 职场文书
2014年医院十一国庆节活动方案
2014/09/15 职场文书
扬州个园导游词
2015/02/06 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python