使用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时间整形转标准格式的示例分享
Feb 14 Python
Python 冒泡,选择,插入排序使用实例
Feb 05 Python
wxPython中listbox用法实例详解
Jun 01 Python
Python实现注册登录系统
Aug 08 Python
对Python通过pypyodbc访问Access数据库的方法详解
Oct 27 Python
python跳出双层for循环的解决方法
Jun 24 Python
使用PyOpenGL绘制三维坐标系实例
Dec 24 Python
详解字符串在Python内部是如何省内存的
Feb 03 Python
python第三方库学习笔记
Feb 07 Python
python读取当前目录下的CSV文件数据
Mar 11 Python
Python自动巡检H3C交换机实现过程解析
Aug 14 Python
python 爬取吉首大学网站成绩单
Jun 02 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
从php核心代码分析require和include的区别
2011/01/02 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
分享php多功能图片处理类
2016/05/15 PHP
javascript面向对象之二 命名空间
2011/02/08 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
关于JavaScript中的关联数组分析
2013/04/09 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
AngularJS使用ng-repeat指令实现下拉框
2016/08/23 Javascript
js实现右键自定义菜单
2016/12/03 Javascript
Angular ui.bootstrap.pagination分页
2017/01/20 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
python条件和循环的使用方法
2013/11/01 Python
Python中的自定义函数学习笔记
2014/09/23 Python
python字符串Intern机制详解
2019/07/01 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
有模特经验的简历自我评价
2013/09/19 职场文书
专科文秘应届生求职信
2013/11/18 职场文书
路政管理专业个人自荐信范文
2013/11/30 职场文书
法院信息化建设方案
2014/05/21 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书
Nginx域名转发使用场景代码实例
2021/03/31 Servers
MongoDB数据库常用的10条操作命令
2021/06/18 MongoDB