使用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程序与C++程序的联合使用
Apr 07 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 Python
django使用xlwt导出excel文件实例代码
Feb 06 Python
python3.x 将byte转成字符串的方法
Jul 17 Python
python中join()方法介绍
Oct 11 Python
基于django channel实现websocket的聊天室的方法示例
Apr 11 Python
Django中自定义admin Xadmin的实现代码
Aug 09 Python
Python3 文章标题关键字提取的例子
Aug 26 Python
python 链接sqlserver 写接口实例
Mar 11 Python
python代码实现扫码关注公众号登录的实战
Nov 01 Python
python入门学习关于for else的特殊特性讲解
Nov 20 Python
Python实现批量将文件复制到新的目录中再修改名称
Apr 12 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程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
php设计模式之命令模式使用示例
2014/03/02 PHP
php生成QRcode实例
2014/09/22 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
Jquery 绑定时间实现代码
2011/05/03 Javascript
js select option对象小结
2013/12/20 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
js数组去重的5种算法实现
2015/11/04 Javascript
简单实现JavaScript图片切换效果
2016/11/28 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
node内置调试方法总结
2018/02/22 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
2018/02/24 jQuery
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
Python 变量类型及命名规则介绍
2013/06/08 Python
python实现的多线程端口扫描功能示例
2017/01/21 Python
基于DataFrame筛选数据与loc的用法详解
2018/05/18 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
Python实现Kerberos用户的增删改查操作
2020/12/14 Python
Clarks鞋美国官网:全球领军鞋履品牌
2017/05/13 全球购物
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
长青弘远的面试题
2012/06/09 面试题
教育专业自荐书范文
2013/12/17 职场文书
项目开发计划书
2014/01/09 职场文书
文明餐桌行动实施方案
2014/02/19 职场文书
优秀安全员事迹材料
2014/05/11 职场文书
美术专业自荐信
2014/07/07 职场文书
售后客服个人自我评价
2014/09/14 职场文书
首席执行官观后感
2015/06/03 职场文书
JavaScript获取URL参数的方法分享
2022/04/07 Javascript