如何设置不同的带宽来对散点图中的每个点进行核密度估计



当我使用scipy进行内核密度估计时,带宽似乎是整个数据集的固定值,尽管我可以自己设置它的值。

def scotts_factor(self):
#Compute Scott's factor.
return power(self.neff, -1./(self.d+4))
self.covariance_factor = self.scotts_factor
self.factor = self.covariance_factor()   #get the value of bandwidth

顺便说一句,我已经检查了sklearn中的代码来进行内核密度估计,代码如下:

kde = KernelDensity(kernel='gaussian', bandwidth=0.2).fit(X)

似乎对于数据集X,它们也共享一个共同的带宽。

因此,整个数据集共享一个共同的带宽值。如果我想为散点图中的每个点设置不同的带宽,我该怎么办?

从我读到的内容来看,你似乎根本没有使用SciPy,但也许我错了。

SciPy提供了一个用于密度估计的类,称为gaussian_kde。你可以在这里阅读文档。

从文档中,参数bw_method允许选择估计带宽的方法。您可以选择已经实现的Scott或Silverman方法,也可以提供可调用的方法。您可以在此处找到有关如何设置bw_method参数的其他示例。

最新更新