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