如何使用scikit规范化核密度估计?

我在多类分类中使用KDE(核密度估计)。我使用scikit来实现它。如网站所述,点x的KDE定义为,

在比较不同类别的不同核密度估计时,我应该规范化结果吗?

KDE的链接:
http://scikit-learn.org/stable/modules/density.html#kernel-density-estimation


回答:

等式不成立,这显然是一个糟糕的文档示例。你可以在代码中看到它是规范化的,就像这里

log_density -= np.log(N)return log_density

所以你显然是除以N的。

从数学角度来看,正确的公式实际上是

1/N SUM_i K(x_i - x)

或者

1/(hN) SUM_i K((x_i - x)/h)

你也可以深入研究.c代码,实际计算核函数,你会发现它们在内部是规范化的

 case __pyx_e_7sklearn_9neighbors_9ball_tree_GAUSSIAN_KERNEL: /* "binary_tree.pxi":475 *     cdef ITYPE_t k *     if kernel == GAUSSIAN_KERNEL: *         factor = 0.5 * d * LOG_2PI             # <<<<<<<<<<<<<< *     elif kernel == TOPHAT_KERNEL: *         factor = logVn(d) */    __pyx_v_factor = ((0.5 * __pyx_v_d) * __pyx_v_7sklearn_9neighbors_9ball_tree_LOG_2PI);    break;

因此,每个K实际上积分为1,因此你只需取平均值就能得到整个KDE的有效密度,这就是内部发生的事情。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注