【问题标题】:kernel density score VS score_samples python scikit内核密度分数VS score_samples python scikit
【发布时间】:2023-04-05 21:38:01
【问题描述】:
我使用 scikit learn 和 python 已经有几天了,尤其是 KernelDensity。
拟合模型后,我想评估新点的概率。
方法 score() 是为此而设计的,但显然不起作用,因为当我将数组作为条目 1 数字是输出时。
我使用 score_samples() 但它很慢。
我认为该分数不起作用,但我没有改进它的技能。如果您有任何想法,请告诉我
【问题讨论】:
标签:
python
scikit-learn
kernel-density
【解决方案1】:
score() 使用 score_samples() 如下:
return np.sum(self.score_samples(X))
所以,这就是你应该在你的情况下使用 score_samples() 的原因。
【解决方案2】:
这有点难说,没有任何代码,但是:
我们假设您要评估的点保存在数组 X 中,并且您有核密度估计 kde,因此您调用:
logprobX = kde.score_samples(X)
但要小心,这些是对数的!
所以你还需要这样做:
probX = np.exp(logprobX)
这些值适合您的(最终计算的)直方图。
运行这些行的时间取决于 X 的长度。在我的机器上,计算 7500 点非常快。