多变量统计.pdf新数组的总大小必须保持不变

2024-09-27 21:24:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道为什么多变量统计.pdf不工作。 现在我有

from scipy import stats
stats.multivariate_normal.pdf(X, meanX, covX)

在哪里

^{pr2}$

我得到的错误是:“新数组的总大小必须保持不变”


现在我试着回答:

meanL = np.float(np.mean(xL))
covL = np.cov(xL)
stats.multivariate_normal.pdf(xL.T, np.full((150,), meanL), covL)

我得到以下错误:

LinAlgError                               Traceback (most recent call last)
<ipython-input-77-4c0280512087> in <module>()
  2 meanL = np.full((150,), meanL)
  3 covL = np.cov(xL)
----> 4 stats.multivariate_normal.pdf(xL.T, meanL, covL)
  5 

/Users/laura/anaconda/lib/python3.5/site-packages/scipy/stats/_multivariate.py in pdf(self, x, mean, cov, allow_singular)
497         dim, mean, cov = self._process_parameters(None, mean, cov)
498         x = self._process_quantiles(x, dim)
--> 499         psd = _PSD(cov, allow_singular=allow_singular)
500         out = np.exp(self._logpdf(x, mean, psd.U, psd.log_pdet, psd.rank))
501         return _squeeze_output(out)

/Users/laura/anaconda/lib/python3.5/site-packages/scipy/stats/_multivariate.py in __init__(self, M, cond, rcond, lower, check_finite, allow_singular)
148         d = s[s > eps]
149         if len(d) < len(s) and not allow_singular:
--> 150             raise np.linalg.LinAlgError('singular matrix')
151         s_pinv = _pinv_1d(s, eps)
152         U = np.multiply(u, np.sqrt(s_pinv))

LinAlgError: singular matrix

Tags: selfpdfstatsnpscipymeancovmultivariate
1条回答
网友
1楼 · 发布于 2024-09-27 21:24:04

我无法复制您得到的准确误差,但尺寸必须匹配: 平均值和协方差需要有形状(N,)和(N,N)。并且X必须有宽度N。这些要求中的一些(但不是全部)可以通过广播来减轻。不管怎样,以下几点对我有用:

>>> X = np.random.random((150,2))
>>> meanX = 0.5
>>> covX = np.identity(150)
>>> print(stats.multivariate_normal.pdf(X.T, np.full((150,), meanX), covX))
[4.43555177e-63 2.84151145e-63]

更新从更新后的Q我怀疑你想要

^{pr2}$

相关问题 更多 >

    热门问题