When using scipy.stats.multivariate_normal.pdf having the error:operands could not be broadcast together with shapes (1,8) (21,)
When using scipy.stats.multivariate_normal.pdf having the error:operands could not be broadcast together with shapes (1,8) (21,)
我想为 python 上的数据集计算多元高斯密度函数。我的数据集有 21 个变量和 75 个数据点。
我已经计算了它的协方差矩阵 (cov),它是一个 21*21 数组,平均数组 m,其形状为 (21,)。我需要使用此 scipy 函数的另一个输入是 "Quantiles(array-like), with the last axis of x denoting the components"。
我不太明白分位数指的是什么。
我将函数的分位数输入写为分位数 = 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不能和形状(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 上的数据集计算多元高斯密度函数。我的数据集有 21 个变量和 75 个数据点。
我已经计算了它的协方差矩阵 (cov),它是一个 21*21 数组,平均数组 m,其形状为 (21,)。我需要使用此 scipy 函数的另一个输入是 "Quantiles(array-like), with the last axis of x denoting the components"。
我不太明白分位数指的是什么。
我将函数的分位数输入写为分位数 = 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不能和形状(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)
大小的矩阵中。请注意,均值向量和协方差矩阵条目对应于正确的变量。