使用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分析git log日志示例
Feb 27 Python
python数据结构之图的实现方法
Jul 08 Python
Python实现的购物车功能示例
Feb 11 Python
使用DataFrame删除行和列的实例讲解
Apr 08 Python
python学习基础之循环import及import过程
Apr 22 Python
python版大富翁源代码分享
Nov 19 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
May 28 Python
Python Django框架防御CSRF攻击的方法分析
Oct 18 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
Mar 12 Python
解决tensorflow 释放图,删除变量问题
Jun 23 Python
python中id函数运行方式
Jul 03 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
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
JS、jQuery中select的用法详解
2016/04/21 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
详解Vue路由开启keep-alive时的注意点
2017/06/20 Javascript
详解Vue.js中.native修饰符
2018/04/24 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
vue-router的使用方法及含参数的配置方法
2018/11/13 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
ECharts地图绘制和钻取简易接口详解
2019/07/12 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
Python内置函数之filter map reduce介绍
2014/11/30 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
Pyecharts 中Geo函数常用参数的用法说明
2021/02/01 Python
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
2014年中班元旦活动方案
2014/02/14 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
满月酒主持词
2014/03/27 职场文书
公司应聘自荐书
2014/06/14 职场文书
委托函范文
2015/01/29 职场文书
公司奖励通知
2015/04/21 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书
python实现局部图像放大
2021/11/17 Python
SpringBoot2零基础到精通之数据与页面响应
2022/03/22 Java/Android
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python