当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python numpy random.mtrand.RandomState.multivariate_normal用法及代码示例


用法:

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个样本,X = [x_1, x_2, ... x_N]。协方差矩阵元素C_{ij}是的协方差x_ix_j。元素C_{ii}是的方差x_i(即其“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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。