从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文件去除注释的方法
May 25 Python
Python使用Supervisor来管理进程的方法
May 28 Python
Python将阿拉伯数字转换为罗马数字的方法
Jul 10 Python
python实现决策树分类算法
Dec 21 Python
Python对象属性自动更新操作示例
Jun 15 Python
Python根据文件名批量转移图片的方法
Oct 21 Python
python 字典访问的三种方法小结
Dec 05 Python
python requests模拟登陆github的实现方法
Dec 26 Python
为什么说python更适合树莓派编程
Jul 20 Python
BeautifulSoup中find和find_all的使用详解
Dec 07 Python
浅谈Python xlwings 读取Excel文件的正确姿势
Feb 26 Python
python装饰器代码深入讲解
Mar 01 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
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
2019/10/12 PHP
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
jquery批量控制form禁用的代码
2013/08/06 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
jQuery 选择符详细介绍及整理
2016/12/02 Javascript
jQuery仿IOS弹出框插件
2017/02/18 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
2020/02/10 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
Python语言描述KNN算法与Kd树
2017/12/13 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
详解python如何引用包package
2020/06/07 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
详解HTML5中ol标签的用法
2015/09/08 HTML / CSS
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
电子商务毕业生求职信
2013/11/10 职场文书
考试不及格的检讨书
2014/01/22 职场文书
单位委托书怎么写
2014/09/21 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
党支部三严三实对照检查材料思想汇报
2014/09/29 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
Html5调用企业微信的实现
2021/04/16 HTML / CSS
Django debug为True时,css加载失败的解决方案
2021/04/24 Python
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL