scipy.stats.multivariate_normal与numpy.random.multivariate_normal的区别及理解验证
关于scipy.stats.multivariate_normal.pdf与numpy.random.multivariate_normal的区别
你的部分观察是对的,但关于scipy函数的作用理解存在偏差,具体区分如下:
核心差异梳理
- scipy.stats.multivariate_normal.pdf(x, mean, cov):必须传入数据点/数据集
x,它的作用是计算给定x在指定均值(mean)、协方差(cov)的多元高斯分布下的概率密度值,而非拟合高斯分布。简单说就是:已知一个多元高斯分布,求某个点在这个分布上的密度高低。 - numpy.random.multivariate_normal(mean, cov, size=None):不需要传入已有数据
x,它的作用是根据指定的mean和cov,生成符合该多元高斯分布的随机样本,也就是从头造出一批符合分布的数据。
具体示例
1. scipy.stats.multivariate_normal.pdf的使用
import scipy.stats as stats # 定义一个二元高斯分布:均值[0,0],单位协方差矩阵 mean = [0, 0] cov = [[1, 0], [0, 1]] # 计算点(1,2)在该分布下的概率密度值 x = [1, 2] pdf_value = stats.multivariate_normal.pdf(x, mean=mean, cov=cov) print(pdf_value) # 输出该点的概率密度数值
2. numpy.random.multivariate_normal的使用
import numpy as np # 同样定义二元高斯分布:均值[0,0],单位协方差矩阵 mean = [0, 0] cov = [[1, 0], [0, 1]] # 生成100个符合该分布的二维样本点 samples = np.random.multivariate_normal(mean=mean, cov=cov, size=100) print(samples.shape) # 输出(100, 2),即100个二维样本
内容的提问来源于stack exchange,提问作者CharlieCCC
相关产品推荐
相关产品推荐

