DBSCAN库提取密度可达点

时间:2015-04-14 18:34:57

标签: java cluster-analysis weka dbscan apache-commons-math

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

到目前为止,我已经了解到在DBSCAN中有3种类型的点(与维基百科一样):核心点,(密度)可达点和异常值。 我的问题是我需要提取聚类及其前沿点或其密度可达点。

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

请注意,DBSCAN群集可以是非凸的。这就是绿色集群可以在红色集群的凸包内部具有核心点的原因。并非内壳内的每个点都是的核心点。在红色星团内部甚至有一个噪点,这不是错误 - 数据集太稀疏,它有太多的局部密度变化与这个epsilon和minPts。噪声点的任何一点都不能成为核心点;但是内部凸壳的任何一点都是肯定的。

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

enter image description here

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