📜  在Python可视化二元高斯分布(1)

📅  最后修改于: 2023-12-03 15:37:38.815000             🧑  作者: Mango

在Python可视化二元高斯分布

二元高斯分布是指两个随机变量同时服从高斯分布的联合概率分布。在数据分析和机器学习中,经常需要对数据进行可视化,而二元高斯分布是数据可视化领域中经常使用的一种分布。本文将介绍如何使用Python进行二元高斯分布的可视化。

准备工作

在Python中,我们可以使用numpy来生成服从二元高斯分布的随机数据,使用matplotlib来进行数据可视化。

import numpy as np
import matplotlib.pyplot as plt

# 生成服从二元高斯分布的随机数据
mean = [0, 0]
cov = [[1, 0], [0, 1]]
x, y = np.random.multivariate_normal(mean, cov, 5000).T

# 进行数据可视化
plt.scatter(x, y)
plt.show()

上述代码中,mean表示二元高斯分布的均值向量,cov表示协方差矩阵,xy分别是随机数据的横坐标和纵坐标。plt.scatter(x, y)表示将随机数据进行散点图可视化,plt.show()表示显示图形。

添加等高线

除了散点图之外,我们还可以使用等高线图来可视化二元高斯分布。等高线图可以展示数据的密度分布情况。

import numpy as np
import matplotlib.pyplot as plt

# 生成服从二元高斯分布的随机数据
mean = [0, 0]
cov = [[1, 0.5], [0.5, 1]]
x, y = np.random.multivariate_normal(mean, cov, 5000).T

# 计算二元高斯分布的概率密度函数
X, Y = np.meshgrid(np.linspace(-5, 5, 100), np.linspace(-5, 5, 100))
pos = np.empty(X.shape + (2,))
pos[:, :, 0] = X
pos[:, :, 1] = Y
rv = multivariate_normal(mean, cov)
Z = rv.pdf(pos)

# 进行数据可视化
plt.contour(X, Y, Z)
plt.scatter(x, y, s=1)
plt.show()

上述代码中,XY分别表示横坐标和纵坐标的网格,pos表示二维坐标网格。rvscipy.stats.multivariate_normal模块中的一个概率密度函数对象,表示二元高斯分布的概率密度函数。最后,使用plt.contour(X, Y, Z)绘制等高线图,plt.scatter(x, y, s=1)绘制散点图。

添加颜色映射

为了更好地展示数据密度,我们可以通过给等高线添加颜色映射来实现。颜色映射可以呈现数据的变化程度,从而让可视化图像更加直观。

import numpy as np
import matplotlib.pyplot as plt

# 生成服从二元高斯分布的随机数据
mean = [0, 0]
cov = [[1, 0.5], [0.5, 1]]
x, y = np.random.multivariate_normal(mean, cov, 5000).T

# 计算二元高斯分布的概率密度函数
X, Y = np.meshgrid(np.linspace(-5, 5, 100), np.linspace(-5, 5, 100))
pos = np.empty(X.shape + (2,))
pos[:, :, 0] = X
pos[:, :, 1] = Y
rv = multivariate_normal(mean, cov)
Z = rv.pdf(pos)

# 添加颜色映射
plt.contourf(X, Y, Z, cmap='Blues')
plt.scatter(x, y, s=1)
plt.show()

上述代码中,使用plt.contourf(X, Y, Z, cmap='Blues')来添加颜色映射。cmap表示颜色映射方案,Blues表示蓝色调颜色映射方案。可以自行选择不同的调色方案来展现数据分布的不同情况。

结语

以上是使用Python可视化二元高斯分布的方法。在进行数据分析和机器学习任务时,了解和掌握如何可视化数据分布是很重要的,通过数据可视化可以更加清晰地了解数据的特点和规律。