二维 均值方差高斯分布图 python_多元高斯分布概率密度推导

一、一元高斯分布概率密度

均值为0,方差为1的标准一元正态分布,概率密度函数为:


在均值为
,方差为
的情况下,需要标准化一下:
,标准化之后方差变为1,
标准化的意义在于将数据点
到均值
的距离转化为数据点
到均值的距离等于多少个总体的标准差
,这样,就消除了数据分布差异和量纲对概率计算的影响,此时的概率密度函数为:

可见,高斯分布的概率密度计算核心在于计算数据点到中心的距离,并且除以标准差将这个绝对距离转化为相对距离,然后通过距离平方的指数衰减计算概率密度。

二、多元高斯分布概率密度

2.1 维度相互独立
回到多元正态分布,先从各维度不相关的多元正态分布入手,数据点通过

维的列向量描述
,各个维度的均值方差分别为
,
来描述,高斯概率密度函数可以表示为:

前面多出的项是为了让概率之和为1,其实这个方程可以这样子去解读:
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于这个问题,我可以提供以下代码:import numpy as np mean = [0, 0] cov = [[1, 0], [0, 1]] x, y = np.random.multivariate_normal(mean, cov, 1000).T plt.plot(x, y, 'x') plt.axis('equal') plt.show() ### 回答2: 要用Python语言写一个生成不同均值方差二维高斯分布的程序,可以使用NumPy库中的random模块来生成随机数,以及matplotlib库来进行可视化。 首先,需要导入所需的库: ```python import numpy as np import matplotlib.pyplot as plt ``` 然后,定义一个函数来生成二维高斯分布。该函数接受两个参数,分别是均值(m)和方差(sigma),并返回一个二维高斯分布矩阵。 ```python def generate_2d_gaussian(m, sigma): cov = [[sigma[0]**2, sigma[0]*sigma[1]], [sigma[1]*sigma[0], sigma[1]**2]] # 协方差矩阵 x, y = np.random.multivariate_normal(m, cov, 100).T # 生成二维高斯分布的数据 return x, y ``` 在主程序中,可以调用该函数来生成不同均值方差二维高斯分布,并使用matplotlib进行可视化。 ```python if __name__ == '__main__': means = [[1, 2], [-1, -2]] # 不同均值 sigmas = [[0.5, 0.5], [1, 2]] # 不同方差 for m, sigma in zip(means, sigmas): x, y = generate_2d_gaussian(m, sigma) plt.scatter(x, y, label=f'mean={m}, var={sigma}') plt.legend() plt.xlabel('x') plt.ylabel('y') plt.title('2D Gaussian Distribution') plt.show() ``` 以上程序会生成两个图像,分别对应不同均值方差二维高斯分布。其中,图像中的每个点表示一个样本点,均值方差的不同会影响点的分布情况。 希望以上回答能满足您的需求! ### 回答3: 要用python语言生成不同均值方差二维高斯分布,我们可以使用numpy库中的random模块。 首先,我们需要导入numpy库和matplotlib库来进行可视化操作。然后,可以定义生成二维高斯分布的函数。 ```python import numpy as np import matplotlib.pyplot as plt def generate_gaussian(mean, variance): # 生成1000个样本 N = 1000 # 生成一个均值为mean,方差为variance的二维高斯分布 cov_matrix = np.array([[variance, 0], [0, variance]]) samples = np.random.multivariate_normal(mean, cov_matrix, N) # 绘制生成的样本点 plt.scatter(samples[:, 0], samples[:, 1], s=5) plt.xlim(-10, 10) plt.ylim(-10, 10) plt.xlabel('x') plt.ylabel('y') plt.title('2D Gaussian Distribution') plt.show() # 调用函数生成均值为[2, 3],方差为[1, 4]的二维高斯分布 generate_gaussian([2, 3], [1, 4]) ``` 以上代码先创建了一个函数`generate_gaussian`,接收两个参数分别表示均值方差。使用numpy的`random.multivariate_normal`函数可以生成多元高斯分布样本。然后,我们使用Matplotlib库来可视化这些样本。 最后的调用`generate_gaussian([2, 3], [1, 4])`生成一个均值为[2, 3],方差为[1, 4]的二维高斯分布。这会绘制一个散点,其中横轴为x,纵轴为y。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值