内核密度得分VS score_samples python scikit

时间:2014-07-10 16:30:13

标签: python scikit-learn kernel-density

我现在使用scikit learn和python几天,特别是KernelDensity。 一旦模型拟合,我想评估新点的概率。 方法得分()是为此而做的,但显然不起作用,因为当我输入数组时,条目1数字是输出。 我使用score_samples()但它很慢。

我认为这个分数不起作用,但我没有技能可以帮助它。如果您有任何想法,请告诉我

2 个答案:

答案 0 :(得分:6)

score()使用score_samples(),如下所示:

return np.sum(self.score_samples(X))

所以,这就是为什么你应该在你的情况下使用score_samples()。

答案 1 :(得分:2)

在没有任何代码的情况下,它有点难以辨别,但是:

我们假设您要评估的点数保存在数组X中,并且您有一个内核密度估算值kde,因此请致电:

logprobX = kde.score_samples(X)

但要小心,这些是对数的! 所以你还需要这样做:

probX = np.exp(logprobX) 

这些值适合您的(最终计算的)直方图。

运行这些线的时间取决于X的长度。在我的机器上,计算7500分的速度非常快。