绘制二维高斯分布的python代码

本文详细介绍了如何在Python中利用matplotlib和numpy库绘制具有特定均值和协方差矩阵的二维高斯分布的等高线图,包括设置参数、生成网格、计算概率密度以及可视化过程。
摘要由CSDN通过智能技术生成

要在Python中绘制二维高斯分布(正态分布),你可以使用matplotlibnumpy库来生成和可视化数据。以下是一个完整的示例,说明如何绘制均值为 μ = ( 0 , 0 ) \mu = (0, 0) μ=(0,0) 并且具有某个协方差矩阵 Σ \Sigma Σ 的二维高斯分布的等高线图。

示例代码

import numpy as np
import matplotlib.pyplot as plt

# 设置均值和协方差矩阵
mu = np.array([0, 0])
Sigma = np.array([[1, 0.5], [0.5, 1]])  # 例如,[1, 0.5; 0.5, 1] 协方差矩阵

# 创建网格点
x = np.linspace(-3, 3, 100)
y = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(x, y)

# 将网格点组合成二维正态分布的输入形式
Z = np.dstack((X, Y))

# 计算二维高斯分布的概率密度函数
def multivariate_gaussian(pos, mu, Sigma):
    n = mu.shape[0]
    Sigma_det = np.linalg.det(Sigma)
    Sigma_inv = np.linalg.inv(Sigma)
    N = np.sqrt((2*np.pi)**n * Sigma_det)
    fac = np.einsum('...k,kl,...l->...', pos-mu, Sigma_inv, pos-mu)
    return np.exp(-fac / 2) / N

# 计算每个网格点的概率密度
pdf = multivariate_gaussian(Z, mu, Sigma)

# 绘制等高线图
plt.contour(X, Y, pdf, colors='black', alpha=0.5)
plt.contourf(X, Y, pdf, cmap='Blues')
plt.colorbar()
plt.title('2D Gaussian distribution')
plt.xlabel('X')
plt.ylabel('Y')
plt.axis('equal')
plt.show()

代码解释

  1. 设置均值和协方差:定义二维高斯分布的均值和协方差矩阵。
  2. 创建网格点:通过numpy.linspacenumpy.meshgrid生成一个均匀的网格,用于计算和显示二维高斯分布的概率密度。
  3. 定义概率密度函数multivariate_gaussian函数通过协方差矩阵和均值来计算位置数组pos上的概率密度。
  4. 绘图:使用matplotlib.pyplotcontourcontourf函数绘制概率密度的等高线和填充等高线图。colorbar添加了一个颜色条,用于解释颜色与概率密度的关系。

这个代码段将生成一个展示所选均值和协方差参数下二维高斯分布的图形,帮助直观理解该分布在二维空间中的形状。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值