np.random.multivariate_normal方法淺析


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

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

 

np.random.multivariate_normal方法用於根據實際情況生成一個多元正態分布矩陣,其在Python3中的定義如下:

def multivariate_normal(mean, cov, size=None, check_valid=None, tol=None) 

mean:多元正態分布的維度。(長度為N的一維數組)

示例:mean = [0, 0]  # 1行2列的一維數組,numpy.ramdom.randn()可以生成一維矩陣。

cov:多元正態分布的協方差矩陣,且協方差矩陣必須是對稱矩陣和半正定矩陣(形狀為(N,N)的二維數組)。

示例:cov = [[1. 0.],  [0. 1.]]  # 可以使用numpy.eye()生成對角矩陣。

size: 數組的形狀(整數或者由整數構成的元組)。如果該值未給定,則返回單個N維的樣本(N恰恰是上面mean的長度)。

示例:size = (3, 3) # 生成的數組的每一個元素是3行3列的矩陣。

check_valid: 當協方差(上面的cov)矩陣不是半正定矩陣時,程序的處理方式(一共有三種方式:{ ‘warn’, ‘raise’, ‘ignore’ })。igore:忽略協方差矩陣不是半正定矩陣的問題,生成數組。warn:輸出警告,但是還是會生成數組。raise:程序報錯,且不會生成數組,。

tol:當協方差矩陣只有一個值時,生成的公差(浮點數)。

函數示例:

# -*- coding:utf-8 -*-
import numpy as np
 
mean = np.random.randn(2)
cov = np.eye(2)
size = (2, 2)
result = np.random.multivariate_normal(mean, cov, size)
print(result)
"""
[[[ 0.90692543  0.62903795]
  [ 0.82555536  1.50642889]]
 [[-0.93568255  1.34735664]
  [-1.26203814  0.37840301]]]

"""

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM