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

kx1ctssn  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(216)

当我使用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,它们似乎也共享一个公共带宽。
因此,整个数据集共享一个共同的带宽值。如果我想为散点图中的每个点设置不同的带宽,我应该怎么做?

z3yyvxxp

z3yyvxxp1#

从我所读到的来看,你似乎根本没有在使用Scipy,但也许我错了。
SciPy提供了一个密度估计类,叫做gaussian_kde。你可以阅读文档here
从文档中,参数bw_method允许选择估算带宽的方法。您可以选择已经实现的Scott或Silverman方法,也可以提供一个可调用的方法。您可以在这里找到如何设置bw_method参数的其他示例。

相关问题