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