python如何生成指定均值向量和协方差矩阵的多维正态分布数据

使用numpy.random.multivariate_normal生成多元正态分布的数组

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

meanmean是多维分布的均值,维度为1
cov协方差矩阵 注意:协方差矩阵必须是对称的且需为半正定矩阵
size指定生成的正态分布矩阵的维度eg:若size=(1, 1, 2),则输出的矩阵的shape即形状为 1X1X2XN(N为mean的长度)
check_valid这个参数用于决定当cov即协方差矩阵不是半正定矩阵时程序的处理方式。它一共有三个值:warn,raise以及ignore。
当使用warn作为传入的参数时,如果cov不是半正定的程序会输出警告但仍旧会得到结果;
当使用raise作为传入的参数时,如果cov不是半正定的程序会报错且不会计算出结果;
当使用ignore时忽略这个问题即无论cov是否为半正定的都会计算出结果。
size: 指定生成矩阵的维度,若size=(1, 1, 2),则输出的矩阵的 shape 即形状为 1X1X2XN(N为mean的长度);
# import numpy 
import numpy as np 
  
mean = [0, 0, 0] #均值向量
matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] #协方差矩阵
# using np.multinomial() method 
gfg = np.random.multivariate_normal(mean, matrix, 5) #5生成5个样本点
  
print(gfg)
"""
[[-2.21792571 -1.04526811 -0.4586839 ] #一行为一个样本点
[ 0.15760965 0.83934119 -0.52943583]
[-0.9978205 0.79594411 -0.00937 ]
[-0.16882821 0.1727549 0.14002367]
[-1.34406079 1.03498375 0.17620708]]
"""

numpy.random.multivariate_normal 是 NumPy 库中的一个函数,用于生成多元正态分布(多元高斯分布)的随机样本。它的用法如下:

numpy.random.multivariate_normal(mean, cov, size=None, check_valid='warn', tol=1e-8)
参数说明:

  • mean:表示多元正态分布的均值向量。
  • cov:表示多元正态分布的协方差矩阵。
  • size:表示要生成的随机样本的数量,可以是整数或元组。如果是整数,则生成一个样本,如果是元组,则生成多个样本。-
  • check_valid:表示是否检查协方差矩阵的有效性,默认为’warn’,即警告模式,可选参数有’warn’、‘raise’和’ignore’。
  • tol:表示检查协方差矩阵是否奇异时的容差,默认为1e-8。
    示例代码:
import numpy as np

mean = [0, 0]
cov = [[1, 0], [0, 1]]

samples = np.random.multivariate_normal(mean, cov, size=10)
print(samples)
输出结果:


[[-0.16544855 -1.07040265]
 [-2.17818343 -0.40001525]
 [ 0.40015721  1.08437294]
 [ 0.52674577  0.9268865 ]
 [ 0.36377449 -1.09737159]
 [ 0.36023465  1.11325241]
 [-0.93891713 -0.78965493]
 [-0.48634028  0.96430325]
 [-0.28105609  0.99268882]
 [-0.34997909 -1.4336052 ]]
以上代码生成了一个均值为 [0, 0],协方差矩阵为 [[1, 0], [0, 1]]10个随机样本。
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值