如何在 scikit-learn 中使用 KDE(核密度估计)进行一维数组聚类?

Posted

技术标签:

【中文标题】如何在 scikit-learn 中使用 KDE(核密度估计)进行一维数组聚类?【英文标题】:How to use KDE (Kernel density estimation) for one-dimensional array clustering, in scikit-learn? 【发布时间】:2016-10-14 22:33:02 【问题描述】:

我阅读了几篇关于一维数组聚类的帖子,其中人们说聚类不适合一维数组,应该改用核密度估计。但是,没有人解释如何使用 kde 准确执行聚类,如何检索输入数据的聚类标签?

在 scikit-learn 中,我得到了单变量(一维)数据的核密度估计。

kde = KernelDensity(kernel='gaussian', bandwidth=0.75).fit(features)

我现在如何使用它进行聚类,即如何检索输入数据的聚类标签?

我正在考虑两种可能的方法: a) 使用 kde 为某些聚类估计器(例如 kmeans)获取新的 2D 输入数据。我想以直方图([值,频率])的形式检索二维数据数组,但我不知道如何从 kde 中做到这一点? 是否可以将 kde 用作聚类算法的新输入数据集,比如 kmeans 估计器?如果是,如何?如何从 kde 获取数据集? b) 直接使用kde 计算簇之间的边界。在我的特殊情况下,我知道有两个集群,我想找到它们之间的边界。而且我需要通过计算来完成,而不是通过查看情节来手动完成......

【问题讨论】:

只需使用 X_samples = kde.sample(n_samples=X)。然后你可以拟合 kmeans。 @sascha,你的表情中的“X”是什么?我如何获得它? 您正在从您学习的 KDE 中采样值。 n_samples 只是要采集的样本数。 @sascha 你希望从中得到什么?这种方法与这个问题一样没有意义。聚类分析是关于回答问题,而不是在没有计划的情况下对随机数据运行随机函数。 【参考方案1】:

您不会对密度估计运行聚类算法。

您想找到密度中的局部最小值和最大值以找到分割数据的位置。

【讨论】:

你可以向他/她展示一些关于如何找到这个局部最小值和最大值的代码,这会丰富你的答案。

以上是关于如何在 scikit-learn 中使用 KDE(核密度估计)进行一维数组聚类?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中解析 XDG/gnome/kde 菜单/桌面项结构?

如何在 GNOME和KDE之间切换

如何在 KDE 上的 Qt 应用程序中禁用自动助记符?

如何在gnome和kde之间切换?

如何使用 xdg-desktop-icon 创建 Linux 桌面图标跨桌面(KDE、GNOME)?

如何检测 Linux 操作系统是使用 KDE 还是 Gnome 环境