从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实现的多线程同步与互斥锁功能示例
Nov 30 Python
Python将多个excel文件合并为一个文件
Jan 03 Python
Python2中文处理纪要的实现方法
Mar 10 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
Mar 23 Python
python远程连接服务器MySQL数据库
Jul 02 Python
tensorflow实现加载mnist数据集
Sep 08 Python
python查看模块,对象的函数方法
Oct 16 Python
举例讲解Python常用模块
Mar 08 Python
python图形工具turtle绘制国际象棋棋盘
May 23 Python
Python求均值,方差,标准差的实例
Jun 29 Python
利用python实现周期财务统计可视化
Aug 25 Python
Python轻量级web框架bottle使用方法解析
Jun 13 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使用数组实现队列
2012/02/05 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
ThinkPHP文件上传实例教程
2014/08/22 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
2015/09/01 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
JavaScript学习笔记之数组求和方法
2016/03/23 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
Python中的元类编程入门指引
2015/04/15 Python
Python编程中的异常处理教程
2015/08/21 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
2018/04/02 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
Python实现word2Vec model过程解析
2019/12/16 Python
Python如何使用字符打印照片
2020/01/03 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
管理专员自荐信
2014/01/26 职场文书
优秀部门获奖感言
2014/02/14 职场文书
高中生班主任评语
2014/04/25 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技