从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深入学习之对象的属性
Aug 31 Python
Python通过select实现异步IO的方法
Jun 04 Python
scrapy spider的几种爬取方式实例代码
Jan 25 Python
Python小工具之消耗系统指定大小内存的方法
Dec 03 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
python实时获取外部程序输出结果的方法
Jan 12 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
Python中import导入不同目录的模块方法详解
Feb 18 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 Python
Python爬虫之爬取哔哩哔哩热门视频排行榜
Apr 28 Python
python not运算符的实例用法
Jun 30 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
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
Codeigniter实现处理用户登录验证后的URL跳转
2014/06/12 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
PHP/HTML混写的四种方式总结
2017/02/27 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
JavaScript中链式调用之研习
2011/04/07 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
TypeScript入门-接口
2017/03/30 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
在一般处理程序(ashx)中弹出js提示语
2017/08/16 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
详解vue 组件
2020/06/11 Javascript
python实现搜索文本文件内容脚本
2018/06/22 Python
Django项目使用ckeditor详解(不使用admin)
2019/12/17 Python
简单了解python调用其他脚本方法实例
2020/03/26 Python
Python-for循环的内部机制
2020/06/12 Python
关于tf.matmul() 和tf.multiply() 的区别说明
2020/06/18 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
python定义具名元组实例操作
2021/02/28 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
施工资料员岗位职责
2014/01/06 职场文书
班级入场式解说词
2014/02/01 职场文书
单位提档介绍信
2015/10/22 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
2019新员工心得体会
2019/06/25 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers