使用python模拟高斯分布例子


Posted in Python onDecember 09, 2019

正态分布(Normal distribution),也称“常态分布”,又名高斯分布(Gaussian distribution)

正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形,因此人们又经常称之为钟形曲线。

若随机变量X服从一个数学期望为μ、方差为σ^2的正态分布。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。

用python 模拟

#!/usr/bin/python
# -*- coding:utf-8 -*-

import numpy as np
from scipy import stats
import math
import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import seaborn


def calc_statistics(x):
  n = x.shape[0] # 样本个数
  # 手动计算
  m = 0
  m2 = 0
  m3 = 0
  m4 = 0
  for t in x:
    m += t
    m2 += t*t
    m3 += t**3
    m4 += t**4
  m /= n
  m2 /= n
  m3 /= n
  m4 /= n

  mu = m
  sigma = np.sqrt(m2 - mu*mu)
  skew = (m3 - 3*mu*m2 + 2*mu**3) / sigma**3
  kurtosis = (m4 - 4*mu*m3 + 6*mu*mu*m2 - 4*mu**3*mu + mu**4) / sigma**4 - 3
  print('手动计算均值、标准差、偏度、峰度:', mu, sigma, skew, kurtosis)

  # 使用系统函数验证
  mu = np.mean(x, axis=0)
  sigma = np.std(x, axis=0)
  skew = stats.skew(x)
  kurtosis = stats.kurtosis(x)
  return mu, sigma, skew, kurtosis


if __name__ == '__main__':
  d = np.random.randn(10000)
  print(d)
  print(d.shape)
  mu, sigma, skew, kurtosis = calc_statistics(d)
  print('函数库计算均值、标准差、偏度、峰度:', mu, sigma, skew, kurtosis)
  # 一维直方图
  mpl.rcParams['font.sans-serif'] = 'SimHei'
  mpl.rcParams['axes.unicode_minus'] = False
  plt.figure(num=1, facecolor='w')
  y1, x1, dummy = plt.hist(d, bins=30, normed=True, color='g', alpha=0.75, edgecolor='k', lw=0.5)
  t = np.arange(x1.min(), x1.max(), 0.05)
  y = np.exp(-t**2 / 2) / math.sqrt(2*math.pi)
  plt.plot(t, y, 'r-', lw=2)
  plt.title('高斯分布,样本个数:%d' % d.shape[0])
  plt.grid(b=True, ls=':', color='#404040')
  # plt.show()

  d = np.random.randn(100000, 2)
  mu, sigma, skew, kurtosis = calc_statistics(d)
  print('函数库计算均值、标准差、偏度、峰度:', mu, sigma, skew, kurtosis)

  # 二维图像
  N = 30
  density, edges = np.histogramdd(d, bins=[N, N])
  print('样本总数:', np.sum(density))
  density /= density.max()
  x = y = np.arange(N)
  print('x = ', x)
  print('y = ', y)
  t = np.meshgrid(x, y)
  print(t)
  fig = plt.figure(facecolor='w')
  ax = fig.add_subplot(111, projection='3d')
  # ax.scatter(t[0], t[1], density, c='r', s=50*density, marker='o', depthshade=True, edgecolor='k')
  ax.plot_surface(t[0], t[1], density, cmap=cm.Accent, rstride=1, cstride=1, alpha=0.9, lw=0.75, edgecolor='k')
  ax.set_xlabel('X')
  ax.set_ylabel('Y')
  ax.set_zlabel('Z')
  plt.title('二元高斯分布,样本个数:%d' % d.shape[0], fontsize=15)
  plt.tight_layout(0.1)
  plt.show()

使用python模拟高斯分布例子

使用python模拟高斯分布例子

来个6的

二元高斯分布方差比较

#!/usr/bin/python
# -*- coding:utf-8 -*-

import numpy as np
from scipy import stats
import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm


if __name__ == '__main__':
  x1, x2 = np.mgrid[-5:5:51j, -5:5:51j]
  x = np.stack((x1, x2), axis=2)
  print('x1 = \n', x1)
  print('x2 = \n', x2)
  print('x = \n', x)

  mpl.rcParams['axes.unicode_minus'] = False
  mpl.rcParams['font.sans-serif'] = 'SimHei'
  plt.figure(figsize=(9, 8), facecolor='w')
  sigma = (np.identity(2), np.diag((3,3)), np.diag((2,5)), np.array(((2,1), (1,5))))
  for i in np.arange(4):
    ax = plt.subplot(2, 2, i+1, projection='3d')
    norm = stats.multivariate_normal((0, 0), sigma[i])
    y = norm.pdf(x)
    ax.plot_surface(x1, x2, y, cmap=cm.Accent, rstride=1, cstride=1, alpha=0.9, lw=0.3, edgecolor='#303030')
    ax.set_xlabel('X')
    ax.set_ylabel('Y')
    ax.set_zlabel('Z')
  plt.suptitle('二元高斯分布方差比较', fontsize=18)
  plt.tight_layout(1.5)
  plt.show()

使用python模拟高斯分布例子

图像好看吗?

以上这篇使用python模拟高斯分布例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
python中的sort方法使用详解
Jul 25 Python
使用django-suit为django 1.7 admin后台添加模板
Nov 18 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
May 11 Python
tensorflow入门之训练简单的神经网络方法
Feb 26 Python
Python爬虫包BeautifulSoup简介与安装(一)
Jun 17 Python
python读取一个目录下所有txt里面的内容方法
Jun 23 Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 Python
Python Print实现在输出中插入变量的例子
Dec 25 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
Feb 11 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
Jul 05 Python
使用python+whoosh实现全文检索
Dec 09 #Python
Python 实现顺序高斯消元法示例
Dec 09 #Python
Python实现线性判别分析(LDA)的MATLAB方式
Dec 09 #Python
在python中做正态性检验示例
Dec 09 #Python
python实现高斯判别分析算法的例子
Dec 09 #Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
Dec 09 #Python
使用 Python 写一个简易的抽奖程序
Dec 08 #Python
You might like
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
发一个自己用JS写的实用看图工具实现代码
2008/07/26 Javascript
js prototype截取字符串函数
2010/04/01 Javascript
jquery动画1.加载指示器
2012/08/24 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
2020/08/03 Javascript
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
python 经典数字滤波实例
2019/12/16 Python
CSS3实现曲线阴影和翘边阴影
2016/05/03 HTML / CSS
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
阿拉伯书店:Jamalon
2019/07/24 全球购物
机关门卫制度
2014/02/01 职场文书
软件部经理岗位职责范本
2014/02/25 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
办公室主任个人总结
2015/02/28 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
详细介绍python类及类的用法
2021/05/31 Python
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技
分享python函数常见关键字
2022/04/26 Python