0

我正在使用带有自定义指标的 KD 估计。该度量显然比内置欧几里得距离慢,但工作正常。做的时候

kde=KernelDensity(...)
kde.fit(X)

我在合理的时间内得到结果。

当我然后计算

surface=np.exp(kde.score_samples(meshgrid))

其中 mehsgrid 是大小(大约)64000x2 的 numpy 数组,kde 计算网格中每个点的距离。我似乎基本上误解了为什么这是必要的......密度已经用 .fit() 方法计算,并且 score_samples “应该”简单地评估网格中每个点的密度 - 对吗?我忽略了什么吗?

当我使用内置欧几里得度量进行所有计算时,计算速度相当快,没有暗示 .score_samples 会迭代数以亿计的点......

任何提示表示赞赏。

4

1 回答 1

0

如果要对样本进行评分,则需要计算网格点处的密度。根据您传递度量的方式,这将使用蛮力方法完成,这意味着计算到所有点的距离。

您可以将指标与内置的 BallTree 一起使用,这可能会节省一些计算量,但这取决于您的数据集和您使用的指标。

于 2015-05-15T15:36:02.860 回答