如何使用核密度估计绘制样本

4
在核密度估计中,可以通过以下公式估算空间中任意一点的密度(来源:维基百科): kde 在sklearn中,可以从该分布中抽取样本。
kde = KernelDensity().fit(z)  # fit kde
z_sampled = kde.sample(100)   # draw 100 samples

有没有从这种分布中抽取样本的明确公式?
1个回答

7

这取决于内核。

但是一般的方法很简单。让我们假设这里使用的是高斯内核:

  • X中均匀选择一个原始点x
  • 从与此点相关联的内核中提取一个值:
    • 高斯分布:sample = Gaussian/Normal(x, b)x=mean; b=standard deviation),其中x=均匀选择的点b=带宽

是的,对于抽样来说不需要拟合。一切都只取决于原始数据和带宽参数!

sklearn的实现进行比较:

i = rng.randint(data.shape[0], size=n_samples)

if self.kernel == 'gaussian':
    return np.atleast_2d(rng.normal(data[i], self.bandwidth))

我省略了访问 data[i] 所需的底层树结构。使用 np.atleast_2d 只是为了与 sklearn 的 API 兼容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接