从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 27 Python
Python3处理文件中每个词的方法
May 22 Python
Python闭包函数定义与用法分析
Jul 20 Python
深入浅析Python 中的sklearn模型选择
Oct 12 Python
python实现LRU热点缓存及原理
Oct 29 Python
python3中pip3安装出错,找不到SSL的解决方式
Dec 12 Python
python range实例用法分享
Feb 06 Python
浅谈Python中的异常和JSON读写数据的实现
Feb 27 Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 Python
QML用PathView实现轮播图
Jun 03 Python
python 实现mysql自动增删分区的方法
Apr 01 Python
Python如何加载模型并查看网络
Jul 15 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
如何开始收听短波广播
2021/03/01 无线电
一些php技巧与注意事项分析
2011/02/03 PHP
PHP处理JSON字符串key缺少双引号的解决方法
2014/09/16 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
另类调用flash无须激活的方法
2006/12/27 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
概述BootStrap中role=&quot;form&quot;及role作用角色
2016/12/08 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
2019/04/15 Javascript
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
Python 开发Activex组件方法
2009/11/08 Python
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
python 实现selenium断言和验证的方法
2019/02/13 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
pycharm 中mark directory as exclude的用法详解
2020/02/14 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
小学中秋节活动方案
2014/02/06 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
经营理念口号
2014/06/21 职场文书
十八大宣传标语
2014/10/09 职场文书
组织生活会表态发言材料
2014/10/17 职场文书
学习心理学的体会
2014/11/07 职场文书
介绍信样本
2015/01/31 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
保护地球的宣传语
2015/07/13 职场文书
Python利器openpyxl之操作excel表格
2021/04/17 Python
如何使用Tkinter进行窗口的管理与设置
2021/06/30 Python