为什么KernelDensity.score_samples计算每个节点上的距离?

时间:2015-05-15 15:09:49

标签: python scikit-learn kernel-density metric

我使用自定义指标的KD估算。该指标明显慢于内置的欧氏距离,但工作正常。做的时候

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

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

当我计算

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

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

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

任何提示都表示赞赏。

1 个答案:

答案 0 :(得分:0)

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

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