我一直在尝试获取30×30阵列的内核密度估计.下面是一个简短的示例,
from scipy.stats import gaussian_kde
x = arange(-0.5,0.51,1/29.)
y = arange(-0.5,0.51,1/29.)
z = randn(30,30)
vec = vstack((x,y))
KDE = gaussian_kde(z.T)
KDE2 = KDE(vec)
这给出了以下错误,
ValueError: points have dimension 2, dataset has dimension 30
我在这里发现了一些其他帖子,这些帖子建议在估算之前需要重塑数据,但是我不确定如何正确执行此操作.
任何帮助表示赞赏
d
解决方法:
当KDE = gaussian_kde(z.T)时,您将对30个随机变量(检查KDE.n)进行内核密度估计,每个变量具有30个维度(检查KDE.d).
如果您正在研究某些数据,则该数据是gaussian_kde()的输入.
然后使用KDE(vec)估计z的内核密度.输入必须具有形状(30,)或(30,N),其中30是尺寸KDE.d的数量.参见文档here.
用这些形状喂x,y没有任何意义.示例here应该可以帮助您入门.在该示例中,d = 2,n = 2000.