内核密度得分VS score_samples python scikit

Rom*_*ain 7 python kernel-density scikit-learn

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

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

小智 9

没有任何代码很难说,但是:

我们假设您要评估的点保存在数组中,X并且您有一个核密度估计kde,因此您调用:

logprobX = kde.score_samples(X)
Run Code Online (Sandbox Code Playgroud)

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

probX = np.exp(logprobX) 
Run Code Online (Sandbox Code Playgroud)

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

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


小智 8

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

return np.sum(self.score_samples(X))
Run Code Online (Sandbox Code Playgroud)

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