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


Python numpy random.multivariate_normal用法及代碼示例


本文簡要介紹 python 語言中 numpy.random.multivariate_normal 的用法。

用法:

random.multivariate_normal(mean, cov, size=None, check_valid='warn', tol=1e-8)

從多元正態分布中抽取隨機樣本。

多元正態分布、多正態分布或高斯分布是一維正態分布向更高維度的推廣。這種分布由其均值和協方差矩陣指定。這些參數類似於一維正態分布的均值(平均值或“center”)和方差(標準差或“width,”平方)。

注意

新代碼應改為使用default_rng() 實例的multivariate_normal 方法;請參閱快速入門。

參數

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 在檢查前被強製加倍。

返回

out ndarray

繪製的樣本,形狀尺寸,如果提供的話。如果不是,形狀是(N,).

換句話說,每個條目out[i,j,...,:] 是從分布中提取的 N 維值。

注意

均值是 N 維空間中的一個坐標,表示最有可能生成樣本的位置。這類似於一維或單變量正態分布的鍾形曲線的峰值。

協方差表示兩個變量一起變化的水平。從多元正態分布中,我們抽取 N 維樣本 。協方差矩陣元素 的協方差。元素 (即它的“spread”)的方差。

代替指定完整的協方差矩陣,流行的近似值包括:

  • 球麵協方差( cov 是單位矩陣的倍數)

  • 對角協方差( cov 具有非負元素,並且僅在對角線上)

通過繪製生成的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.,“概率、隨機變量和隨機過程”,第 3 版,紐約:McGraw-Hill,1991 年。

2

Duda, R. O.、Hart, P. E. 和 Stork, D. G.,“模式分類”,第 2 版,紐約: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.org大神的英文原創作品 numpy.random.multivariate_normal。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。