Python数据可视化之高斯分布

Python数据可视化之高斯分布

一维高斯分布模型

高斯分布:

N(μ,δ2)=1δ2πe(xμ)22δ2

Python实现

在python中,我们通过坐标变换来求得任意的高斯分布。

import numpy as np
import matplotlib.pyplot as plt

x = np.random.randn(400)

其中np.random.randn(400)生成400个符合正态分布的样本点,背后的生成模型为:

N(0,1)=12πex22

可视化数据样本点:

y = np.zeros((400))

plt.plot(x,y,'ro')
plt.axis([-5,5,-0.1,0.2])
plt.show()

Alt text

可视化概率分布函数:

n, bins, patches = plt.hist(x, 50, normed=1, facecolor='r', alpha=0.75)
plt.axis([-5,5,0,1])
plt.show()

Alt text

当增大数据样本点时,上述样本分布近似于高斯分布:

x = np.random.randn(100000)
n, bins, patches = plt.hist(x, 50, normed=1, facecolor='r', alpha=0.75)
plt.axis([-5,5,0,1])
plt.show()

Alt text

通过坐标变化画出任意高斯分布模型,令

f(x)=12πex22

其中np.random.randn()函数生成了大量的x点。所以我们可以让
x=xμδ

代入 f(x)
f(xμδ)=1δ2πe(xμ)22δ2

我们不考虑纵轴的变化情况。因此要想得到任意的高斯分布模型,我们只需要解出 x 即可,解得 x=μ+δx

又因为 x <script type="math/tex" id="MathJax-Element-43">x</script>由np.random.randn()生成,所以在python中,我们可以有如下形式:

mu,delta= 70,4.2
x = mu + delta * np.random.randn(100000)
n, bins, patches = plt.hist(x, 50, normed=1, facecolor='r', alpha=0.75)
plt.axis([50,100,0,0.5])
plt.show()

Alt text

二维高斯分布模型

对应的,只需要生成符合正态分布的x和y即可,代码如下:

mu_x,delta_x= 70,4.2
mu_y,delta_y = 20,2.1
x = mu_x + delta_x * np.random.randn(400)
y = mu_y + delta_y * np.random.randn(400)

plt.plot(x,y,'ro')
plt.axis([50,90,10,30])
plt.show()

Alt text

参考文献

1.http://matplotlib.org/users/pyplot_tutorial.html

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值