温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在python项目中模拟高斯分布

发布时间:2021-03-22 17:48:49 来源:亿速云 阅读:315 作者:Leah 栏目:开发技术

今天就跟大家聊聊有关怎么在python项目中模拟高斯分布,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

正态分布(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项目中模拟高斯分布有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI