python - n维数据的高斯KDE:数组的前导次要不是正定的
问题描述
我有两个 n 维数据子集,A
并且B
我想知道,对于来自它周围B
的样本密度中的每个样本。A
具有 3 个维度的 5 个样本的示例数据集
A = np.array([[-2.44528668, -0.09326276, -1.06527892],
[-1.35144799, -1.45507518, -0.02096 ],
[-0.5788315 , -1.48932706, -0.28496559],
[-1.60224949, -0.76823424, -0.11548589],
[-1.15768561, -0.74704022, -0.14744463]])
B = np.array([[-1.84134663, -1.42036525, -1.38819347],
[-2.58165693, -2.49423057, -1.57609454],
[-0.78776371, -0.79168188, 0.21967791],
[-1.0165618 , -1.78509185, -0.68373997],
[-1.21764947, -0.43215885, -0.34393573]])
我尝试执行以下操作
from scipy.stats import gaussian_kde
kernel = gaussian_kde(A)
densities = kernel(B)
但这引发了
LinAlgError: 2-th leading minor of the array is not positive definite
这个错误是什么意思,我怎样才能得到A
每个样本的点密度B
?
解决方案
根据我收到的错误消息
kernel = gaussian_kde(A)
densities = kernel(B[0])
我认为将gaussian_kde
每一列视为一个样本,将每一行视为第 n 维中的坐标,因此我应该改用数组的转置。
所以为了得到我想要的结果,我应该做
kernel = gaussian_kde(A.T)
densities = kernel(B.T)
但我仍然不知道我收到的错误消息是什么意思。
推荐阅读
- python - Python Spotipy 缺少标头权限
- c# - 如何将文本框值绑定到 gridview 行的总数?
- python-3.x - tkinter 选项菜单不会设置标题
- python - 计算一组位置和特定点之间最小距离的最快方法(DataFrame)
- wordpress - Wordpress youtube 控制屏幕外
- bash - 如何从文件名中提取一个以下划线分隔的字段?
- c++ - 显示器之间的 Qt 自定义无框窗口中的绘画问题
- c# - Unity3D C# VR:在玩家的某个点产生对象
- set - Set 是什么意思
[] 集 = 新集 [] {setW, setX, setY, setZ}; 在 Java 中是什么意思? - arrays - 函数在数组中查找项目,快速