當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。