gpt4 book ai didi

python - 使用 scipy.stats.multivariate_normal.pdf 时出现错误 :operands could not be broadcast together with shapes (1, 8) (21,)

转载 作者:太空狗 更新时间:2023-10-30 00:38:19 25 4
gpt4 key购买 nike

我想为我在 python 上的数据集计算多元高斯密度函数。我的数据集有 21 个变量和 75 个数据点。

我已经计算了这个 21*21 数组的协方差矩阵 (cov),以及形状为 (21,) 的均值数组 m。我需要使用这个 scipy 函数的另一个输入是“分位数(类似数组),x 的最后一个轴表示组件”。

我不太明白分位数指的是什么。

我将函数的分位数输入写为 quantiles = np.array([0.0, 0.01, 0.05, 0.1, 1-0.10, 1-0.05, 1-0.01, 1.0]) 但是当我然后计算 scipy.stats.multivariate_normal.pdf(quantiles,m,cov)

错误是:valueError:operands could not be broadcast with shapes (1,8) (21,)

有人能帮忙吗??

最佳答案

我认为该文档要求一个 x,它以一种相当难以理解的方式在其最后一个轴中包含实际的随机向量。以下代码有效:

import numpy as np
from scipy.stats import multivariate_normal


mean = np.array([0.5, 0.1, 0.3])
cov = np.array([[0.1, 0.0, 0.0], [0.0, 1.5, 0.0], [0.0, 0.0, 0.9]])
x = np.random.uniform(size=(100, 3))
y = multivariate_normal.pdf(x, mean=mean, cov=cov)
print(y)

因此构建您的数据矩阵 x,使其在第一维(每一行)中包含您的数据向量。第二个维度(列)将构成您的 21 个独立变量。所以基本上,您需要将数据插入到 (75,21) 大小的矩阵中。请注意,平均向量和协方差矩阵条目对应于正确的变量。

关于python - 使用 scipy.stats.multivariate_normal.pdf 时出现错误 :operands could not be broadcast together with shapes (1, 8) (21,),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45058690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com