用法:
RandomState.multivariate_normal(mean, cov, size=None, check_valid='warn', tol=1e-8)
从多元正态分布中抽取随机样本。
多元正态分布,多元正态分布或高斯分布是将一维正态分布推广到更高维度的方法。这种分布由其均值和协方差矩阵指定。这些参数类似于一维正态分布的平均值(平均值或“center”)和方差(标准偏差或“width,”平方)。
参数: - mean: : 1-D array_like, of length N
N-dimensional分布的平均值。
- cov: : 2-D array_like, of shape (N, N)
分布的协方差矩阵。它必须是对称的,并且必须为positive-semidefinite才能正确采样。
- size: : int 或 tuple of ints, 可选参数
例如,给定形状
(m,n,k)
,m*n*k
生成样本,并以m-by-n-by-k的方式打包。由于每个样本均为N-dimensional,因此输出形状为(m,n,k,N)
。如果未指定形状,则单个(N-D)返回样品。- check_valid: : { ‘warn’, ‘raise’, ‘ignore’ }, 可选参数
协方差矩阵不是正半定值时的行为。
- tol: : float, 可选参数
检查协方差矩阵中的奇异值时的公差。在检查前将cov转换为两倍。
返回值: - out: : ndarray
如果提供了形状大小的抽取样本。如果不是,则形状为
(N,)
。换句话说,每个条目
out[i,j,...,:]
是从分布中得出的N-dimensional值。
注意:
平均值是N-dimensional空间中的坐标,它表示最可能生成样本的位置。这类似于一维或单变量正态分布的钟形曲线的峰值。
协方差表示两个变量一起变化的水平。从多元正态分布中,我们得出N-dimensional个样本,。协方差矩阵元素是的协方差和。元素是的方差(即其“spread”)。
代替指定完整的协方差矩阵,流行的近似包括:
- Spherical covariance (cov is a multiple of the identity matrix)
- Diagonal covariance (cov has non-negative elements, and only on the diagonal)
通过绘制生成的data-points,可以在二维中看到此几何属性:
>>> mean = [0, 0] >>> cov = [[1, 0], [0, 100]] # diagonal covariance
对角协方差意味着点沿x或y轴定向:
>>> import matplotlib.pyplot as plt >>> x, y = np.random.multivariate_normal(mean, cov, 5000).T >>> plt.plot(x, y, 'x') >>> plt.axis('equal') >>> plt.show()
请注意,协方差矩阵必须为正半定数(也称为nonnegative-definite)。否则,此方法的行为是不确定的,并且不能保证向后兼容。
参考文献:
[1] Papoulis,A。,“概率,随机变量和随机过程”,第三版,纽约:McGraw-Hill,1991年。 [2] Duda,R. O.,Hart,P. E.和Stork,D. G.,“模式分类”,第二版,纽约:Wiley,2001年。 例子:
>>> mean = (1, 2) >>> cov = [[1, 0], [0, 1]] >>> x = np.random.multivariate_normal(mean, cov, (3, 3)) >>> x.shape (3, 3, 2)
考虑到0.6大约是标准偏差的两倍,以下情况可能是正确的:
>>> list((x[0,0,:] - mean) < 0.6) [True, True] # random
注:本文由纯净天空筛选整理自 numpy.random.mtrand.RandomState.multivariate_normal。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。