用于提取密度可达点的 DBSCAN 库

DBSCAN libraries to extract density-reachable points

我正在使用 DBSCAN 库从一组数据中提取聚类。到目前为止,我已经使用 Apache Common Math 和 WEKA 库测试了 DBSCAN。 (我的问题不是关于哪些库可用于 DBSCAN 的实现)

到目前为止,我了解到在 DBSCAN 中有 3 种类型的点(根据维基百科):核心点、(密度)可达点和离群点。 我的问题是我需要提取集群及其边界点或其密度可达点。

你知道任何允许我提取每个簇的密度可达点的 DBSCAN 库吗?

在ELKI实现中,可以使用选项

-algorithm clustering.gdbscan.GeneralizedDBSCAN -gdbscan.core-model

得到一个仅包含集群核心点的集群"model"。 集群成员仍然是边界点——密度可达,但不是核心。但是,这需要更多内存,因此默认情况下不启用。

在这个图像中,内部凸包只是核心点。对于绿色集群,只有两个核心点。对于噪声点,显然没有嵌套簇。

请注意,DBSCAN 聚类可以是非凸的。这就是为什么绿色簇可以在红色簇的凸包内有核心点。并非内壳内的每个点 都是 核心点。红色簇内甚至有一个噪声点,这不是错误 - 数据集太稀疏,这个 epsilon 和 minPts 的局部密度变化太大。该噪声点附近的任何一点都不能成为核心点;但是内凸包的任何一点都是肯定的

Cluster 对象将为您提供完整的点列表,而不仅仅是凸包。核心点可通过集群 CoreObjectsModel 访问。只有可视化代码使用凸包以避免图像过于混乱。此外,默认输出编写器当前 输出此信息。您将需要使用 Java,并编写自定义 ResultHandler 以根据需要输出数据,或者甚至在 ELKI 中完成所有操作。

请注意,边界点、噪声点和核心点之间的区别被认为已经过时,并且在较新的文献中没有得到理论模型的很好支持。