我使用自定义指标的KD估算。该指标明显慢于内置的欧氏距离,但工作正常。做的时候
kde=KernelDensity(...)
kde.fit(X)
我在合理的时间内得到了结果。
当我计算
时surface=np.exp(kde.score_samples(meshgrid))
其中mehsgrid是一个大小(约)64000x2的numpy数组,kde计算网格中每个点的距离。 我似乎基本上误解了为什么必要......密度已经用.fit()方法计算,而score_samples"应该"只需评估网格中每个点的密度 - 对吗?我忽视了什么吗?
当我使用内置的欧几里德度量进行所有计算时,计算速度相当快,没有提示.score_samples会迭代数以千计的点......
任何提示都表示赞赏。
答案 0 :(得分:0)
如果要对样本进行评分,则需要计算网格网点的密度。根据您通过指标的方式,这将使用强力方法完成,这意味着计算到所有点的距离。
您可以将指标与内置的BallTree一起使用,这可能会为您节省一些计算,但这取决于您使用的数据集和指标。