我现在正在使用 scikit learn 和 python 几天,尤其是 KernelDensity。拟合模型后,我想评估新点的概率。方法 score() 是为此而设计的,但显然不起作用,因为当我将数组作为条目 1 数字是输出时。我使用 score_samples() 但它很慢。
我认为这个分数不起作用,但我没有改进它的技能。如果您有任何想法,请告诉我
我现在正在使用 scikit learn 和 python 几天,尤其是 KernelDensity。拟合模型后,我想评估新点的概率。方法 score() 是为此而设计的,但显然不起作用,因为当我将数组作为条目 1 数字是输出时。我使用 score_samples() 但它很慢。
我认为这个分数不起作用,但我没有改进它的技能。如果您有任何想法,请告诉我
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 点非常快。