从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 字符串格式化代码
Mar 17 Python
初学python的操作难点总结(新手必看篇)
Aug 03 Python
浅谈Python traceback的优雅处理
Aug 31 Python
python 拼接文件路径的方法
Oct 23 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
Dec 11 Python
python破解bilibili滑动验证码登录功能
Sep 11 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
Jan 16 Python
解决Pycharm 导入其他文件夹源码的2种方法
Feb 12 Python
利用python下载scihub成文献为PDF操作
Jul 09 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
Nov 26 Python
Python pandas求方差和标准差的方法实例
Aug 04 Python
Python selenium绕过webdriver监测执行javascript
Apr 12 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对象相互引用的内存溢出实例分析
2014/08/28 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
动态表格Table类的实现
2009/08/26 Javascript
关于Jqzoom的使用心得 jquery放大镜效果插件
2010/04/12 Javascript
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
2012/02/03 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
分享JavaScript监听全部Ajax请求事件的方法
2016/08/28 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
使用vue + less 实现简单换肤功能的示例
2018/02/21 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
2019/05/07 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
python对日志进行处理的实例代码
2018/10/06 Python
Python重新加载模块的实现方法
2018/10/16 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
基于python的socket实现单机五子棋到双人对战
2020/03/24 Python
使用Python Tkinter实现剪刀石头布小游戏功能
2020/10/23 Python
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
英语专业毕业个人求职自荐信
2013/09/21 职场文书
网络编辑职责
2014/03/01 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
城管大队整治方案
2014/05/06 职场文书
入党介绍人评语
2014/05/06 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
政府班子四风问题整改措施思想汇报
2014/10/08 职场文书
泰山导游词
2015/02/02 职场文书
政协委员个人总结
2015/03/03 职场文书
中学教师读书笔记
2015/07/01 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
golang定时器
2022/04/14 Golang