【发布时间】:2011-05-06 22:26:13
【问题描述】:
我正在尝试使用the scipy.stats.gaussian_kde class 来平滑一些使用纬度和经度信息收集的离散数据,因此它最终显示为有点类似于等高线图,其中高密度是峰值和低密度是山谷。
我很难将二维数据集放入 gaussian_kde 类中。我一直在尝试弄清楚它是如何处理一维数据的,所以我认为二维应该是这样的:
from scipy import stats
from numpy import array
data = array([[1.1, 1.1],
[1.2, 1.2],
[1.3, 1.3]])
kde = stats.gaussian_kde(data)
kde.evaluate([1,2,3],[1,2,3])
也就是说我在[1.1, 1.1], [1.2, 1.2], [1.3, 1.3] 有 3 分。我想在 x 和 y 轴上使用 1 的宽度使用 1 到 3 进行内核密度估计。
在创建 gaussian_kde 时,它一直给我这个错误:
raise LinAlgError("singular matrix")
numpy.linalg.linalg.LinAlgError: singular matrix
查看gaussian_kde的源代码,我意识到我思考数据集含义的方式与计算维度的方式完全不同,但是我找不到任何示例代码来显示多维数据的方式与模块一起工作。有人可以帮我提供一些将gaussian_kde 用于多维数据的示例方法吗?
【问题讨论】:
-
尝试使用并非全部在一行中的数据。我不确定它是否应该为此失败,或者它是否是一个错误。
标签: scipy multidimensional-array kernel-density