本文简要介绍 python 语言中 numpy.random.Generator.multivariate_normal
的用法。
用法:
random.Generator.multivariate_normal(mean, cov, size=None, check_valid='warn', tol=1e-8, *, method='svd')
从多元正态分布中抽取随机样本。
多元正态分布、多正态分布或高斯分布是一维正态分布向更高维度的推广。这种分布由其均值和协方差矩阵指定。这些参数类似于一维正态分布的均值(平均值或“center”)和方差(标准差或“width,”平方)。
- mean: 一维 数组,长度为 N
N 维分布的平均值。
- cov: 2-D 数组,形状 (N, N)
分布的协方差矩阵。它必须是对称的和半正定的才能正确采样。
- size: int 或整数元组,可选
例如,给定一个形状,
(m,n,k)
,m*n*k
生成样本,并打包在一个m-经过-n-经过-k安排。因为每个样本都是N-维,输出形状为(m,n,k,N)
.如果未指定形状,则单个 (N-D) 样品被退回。- check_valid: { ‘warn’, ‘raise’, ‘ignore’ },可选
协方差矩阵不是半正定时的行为。
- tol: 浮点数,可选
检查协方差矩阵中的奇异值时的容差。 cov 在检查前被强制加倍。
- method: { ‘svd’, ‘eigh’, ‘cholesky’},可选
cov 输入用于计算因子矩阵 A 使得
A @ A.T = cov
.此参数用于选择用于计算因子矩阵 A 的方法。默认方法 ‘svd’ 是最慢的,而 ‘cholesky’ 是最快的,但不如最慢的方法稳健。方法八使用特征分解来计算 A 并且比 svd 快但比 cholesky 慢。
- out: ndarray
绘制的样本,形状尺寸,如果提供的话。如果不是,形状是
(N,)
.换句话说,每个条目
out[i,j,...,:]
是从分布中提取的 N 维值。
参数:
返回:
注意:
均值是 N 维空间中的一个坐标,表示最有可能生成样本的位置。这类似于一维或单变量正态分布的钟形曲线的峰值。
协方差表示两个变量一起变化的水平。从多元正态分布中,我们抽取 N 维样本 。协方差矩阵元素 是 和 的协方差。元素 是 (即它的“spread”)的方差。
代替指定完整的协方差矩阵,流行的近似值包括:
通过绘制生成的data-points,可以在二维中看到此几何属性:
>>> mean = [0, 0] >>> cov = [[1, 0], [0, 100]] # diagonal covariance
对角协方差意味着点沿 x 或 y 轴定向:
>>> import matplotlib.pyplot as plt >>> x, y = np.random.default_rng().multivariate_normal(mean, cov, 5000).T >>> plt.plot(x, y, 'x') >>> plt.axis('equal') >>> plt.show()
请注意,协方差矩阵必须是半正定的(又名nonnegative-definite)。否则,此方法的行为是未定义的,并且不能保证向后兼容性。
参考:
Papoulis, A.,“概率、随机变量和随机过程”,第 3 版,纽约:McGraw-Hill,1991 年。
Duda, R. O.、Hart, P. E. 和 Stork, D. G.,“模式分类”,第 2 版,纽约:Wiley,2001。
1:
2:
例子:
>>> mean = (1, 2) >>> cov = [[1, 0], [0, 1]] >>> rng = np.random.default_rng() >>> x = rng.multivariate_normal(mean, cov, (3, 3)) >>> x.shape (3, 3, 2)
我们可以使用除默认方法之外的其他方法来分解 cov:
>>> y = rng.multivariate_normal(mean, cov, (3, 3), method='cholesky') >>> y.shape (3, 3, 2)
以下可能是正确的,因为 0.6 大约是标准偏差的两倍:
>>> list((x[0,0,:] - mean) < 0.6) [True, True] # random
相关用法
- Python numpy Generator.multivariate_hypergeometric用法及代码示例
- Python numpy Generator.multinomial用法及代码示例
- Python numpy Generator.standard_normal用法及代码示例
- Python numpy Generator.bytes用法及代码示例
- Python numpy Generator.shuffle用法及代码示例
- Python numpy Generator.choice用法及代码示例
- Python numpy Generator.random用法及代码示例
- Python numpy Generator.logseries用法及代码示例
- Python numpy Generator.uniform用法及代码示例
- Python numpy Generator.standard_t用法及代码示例
- Python numpy Generator.standard_cauchy用法及代码示例
- Python numpy Generator.normal用法及代码示例
- Python numpy Generator.poisson用法及代码示例
- Python numpy Generator.power用法及代码示例
- Python numpy Generator.geometric用法及代码示例
- Python numpy Generator.laplace用法及代码示例
- Python numpy Generator.vonmises用法及代码示例
- Python numpy Generator.noncentral_f用法及代码示例
- Python numpy Generator.gamma用法及代码示例
- Python numpy Generator.weibull用法及代码示例
- Python numpy Generator.gumbel用法及代码示例
- Python numpy Generator.pareto用法及代码示例
- Python numpy Generator.noncentral_chisquare用法及代码示例
- Python numpy Generator.negative_binomial用法及代码示例
- Python numpy Generator.binomial用法及代码示例
注:本文由纯净天空筛选整理自numpy.org大神的英文原创作品 numpy.random.Generator.multivariate_normal。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。