使用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实现根据图标提取分类应用程序实例
Sep 28 Python
python使用BeautifulSoup分析网页信息的方法
Apr 04 Python
python实现应用程序在右键菜单中添加打开方式功能
Jan 09 Python
对python中return和print的一些理解
Aug 18 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
python函数的万能参数传参详解
Jul 26 Python
python 经典数字滤波实例
Dec 16 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 Python
python主要用于哪些方向
Jul 05 Python
浅谈Python 钉钉报警必备知识系统讲解
Aug 17 Python
Django web自定义通用权限控制实现方法
Nov 24 Python
python爬虫分布式获取数据的实例方法
Nov 26 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
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
PHP gbk环境下json_dencode传送来的汉字
2012/11/13 PHP
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
ThinkPHP控制器详解
2015/07/27 PHP
PHP实现的MD5结合RSA签名算法实例
2017/10/07 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
jQuery实现定时读取分析xml文件的方法
2015/07/16 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
使用vue点击li,获取当前点击li父辈元素的属性值方法
2018/09/12 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
Python中优化NumPy包使用性能的教程
2015/04/23 Python
浅析Python多线程下的变量问题
2015/04/28 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
python远程连接MySQL数据库
2019/04/19 Python
Python实现壁纸下载与轮换
2020/10/19 Python
用 python 进行微信好友信息分析
2020/11/28 Python
Staples英国官方网站:办公用品一站式采购
2017/10/06 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
高二美术教学反思
2014/01/14 职场文书
校庆活动方案
2014/03/31 职场文书
组织鉴定材料
2014/06/02 职场文书
学校教师安全责任书
2014/07/23 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
公安机关起诉意见书
2015/05/20 职场文书
邹越演讲观后感
2015/06/15 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书