python输出数字方阵_Python根据corellation矩阵生成数字

感谢您回答我有关何时可以访问数据的问题.当您致电cholesky时,会生成收到的错误. cholesky要求您的矩阵是正半定的.检查矩阵是否为半正定的一种方法是查看其所有特征值是否都大于零.相关/协方差矩阵的特征值之一几乎为零.我认为cholesky只是在挑剔.使用时可以使用scipy.linalg.sqrtm作为替代分解.

对于有关生成多元法线的问题,您生成的随机法线应为标准随机法线,即平均值为0,宽度为1.Numpy为标准随机法线生成器提供了np.random.randn.

要生成多元法线,还应该对协方差进行分解,而不是对相关矩阵进行分解.如您所料,以下将使用仿射变换生成多元法线.

from scipy.linalg import cholesky, sqrtm

relavant_columns = ['Affecting homelife',

'Affecting mobility',

'Affecting social life/hobbies',

'Affecting work',

'Mood',

'Pain Score',

'Range of motion in Doc']

# df is a pandas dataframe containing the data frame from figure 1

mu = df[relavant_columns].mean().values

cov = df[relavant_columns].cov().values

number_of_sample = 10

# generate using affine transformation

#c2 = cholesky(cov).T

c2 = sqrtm(cov).T

s = np.matmul(c2, np.random.randn(c2.shape[0], number_of_sample)) + mu.reshape(-1, 1)

# transpose so each row is a sample

s = s.T

Numpy还具有内置功能,可以直接生成多元法线

s = np.random.multivariate_normal(mu, cov, size=number_of_sample)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值