我现在使用scikit-learn和Python几天了,更专门地使用KernelDensity。 一旦模型适合,我想评估新点的概率。 方法score()就是为此而设计的,但显然不起作用,因为当我将一个数组作为输入时,只有一个数字输出。我使用score_samples(),但速度非常慢。 我认为score不起作用,但我没有技能来改善它。 如果您有任何想法,请告诉我。
score()使用score_samples()如下:
return np.sum(self.score_samples(X))
因此,在您的情况下应使用score_samples()。
没有代码很难说,但是:
我们假设您要评估的点保存在数组X
中,并且您有一个核密度估计kde
,因此您可以调用:
logprobX = kde.score_samples(X)
但是要小心,这些是对数!所以你还需要执行:
probX = np.exp(logprobX)
这些数值适用于您的直方图(可能是之前计算过的)。
运行这些代码所需的时间取决于X的长度。在我的机器上,计算7500个点相当快。