从np.random.normal()到正态分布的拟合操作

作者:五道口纳什 时间:2023-09-09 18:00:01 

先看伟大的高斯分布(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()到正态分布的拟合操作

来源:https://blog.csdn.net/lanchunhui/article/details/50163669

标签:np.random.normal,正态分布,拟合
0
投稿

猜你喜欢

  • python机器学习实战之K均值聚类

    2022-12-22 21:50:31
  • python 爬取豆瓣网页的示例

    2021-06-25 22:50:00
  • Dreamweaver使用中的7个常见问题与解答

    2007-11-03 11:34:00
  • python中set()函数简介及实例解析

    2022-05-15 17:12:24
  • MySQL数据库事务原理及应用

    2024-01-17 13:02:49
  • Sublime中View in Browser功能不生效问题及解决

    2022-07-03 05:48:16
  • python人工智能tensorflow函数tensorboard使用方法

    2021-04-21 14:52:46
  • Java操作数据库连接池案例讲解

    2024-01-21 18:39:40
  • vue阻止页面回退的实现方法(浏览器适用)

    2024-06-07 15:24:10
  • Django项目如何给数据库添加约束

    2023-08-10 14:49:39
  • 深入理解python 生成器、迭代器、动态新增属性及方法

    2023-11-13 03:04:32
  • PyQt5实现进度条与定时器及子线程同步关联

    2023-03-20 14:48:35
  • 举例讲解Python装饰器

    2022-02-17 10:49:18
  • Python编程实现控制cmd命令行显示颜色的方法示例

    2023-07-24 05:39:45
  • Python中优化NumPy包使用性能的教程

    2021-03-27 21:08:43
  • python+tkinter+mysql做简单数据库查询界面

    2024-01-19 21:13:20
  • 详解MySQL数据库千万级数据查询和存储

    2024-01-16 18:53:20
  • 使用sysbench来测试MySQL性能的详细教程

    2024-01-14 14:33:54
  • 合并百度影音的离线数据( with python 2.3)

    2022-01-11 09:22:14
  • Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程

    2022-02-22 07:34:22
  • asp之家 网络编程 m.aspxhome.com