侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

使用python模拟高斯分布例子

Python  /  管理员 发布于 7年前   213

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

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

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

用python 模拟

#!/usr/bin/python# -*- coding:utf-8 -*-import numpy as npfrom scipy import statsimport mathimport matplotlib as mplimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cmimport seaborndef 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, kurtosisif __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()

来个6的

二元高斯分布方差比较

#!/usr/bin/python# -*- coding:utf-8 -*-import numpy as npfrom scipy import statsimport matplotlib as mplimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cmif __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+whoosh实现全文检索
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客