从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字符串替换的2种方法
Nov 30 Python
Python中设置变量访问权限的方法
Apr 27 Python
Python中的with语句与上下文管理器学习总结
Jun 28 Python
Python中import机制详解
Nov 14 Python
Django入门使用示例
Dec 12 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
Pycharm+Scrapy安装并且初始化项目的方法
Jan 15 Python
解决安装pycharm后不能执行python脚本的问题
Jan 19 Python
Python实现二叉树的常见遍历操作总结【7种方法】
Mar 06 Python
Python 中@property的用法详解
Jan 15 Python
Python numpy多维数组实现原理详解
Mar 10 Python
Python参数传递机制传值和传引用原理详解
May 22 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+SQLite存储方案
2010/09/04 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
PHP实现链表的定义与反转功能示例
2018/06/09 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
Js之软键盘实现(js源码)
2007/01/30 Javascript
鼠标经过的文本框textbox变色
2009/05/21 Javascript
页面版文本框智能提示JS代码
2009/11/20 Javascript
html向js方法传递参数具体实现
2013/08/08 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
javascript检测浏览器的缩放状态实现代码
2014/09/28 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
2018/08/12 Javascript
vue中node_modules中第三方模块的修改使用详解
2019/05/31 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
Python字符转换
2008/09/06 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
2015/03/05 Python
fastcgi文件读取漏洞之python扫描脚本
2017/04/23 Python
Python实现最大子序和的方法示例
2019/07/05 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
Stuart Weitzman欧盟:美国奢华鞋履品牌
2017/05/24 全球购物
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
交通运输局四风问题对照检查材料思想汇报
2014/10/09 职场文书
2015年生产部工作总结范文
2015/05/25 职场文书
初中语文教学反思范文
2016/03/03 职场文书
普希金诗歌赏析(6首)
2019/08/22 职场文书
php字符串倒叙
2021/04/01 PHP
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏
JS class语法糖的深入剖析
2022/07/07 Javascript