DBSCAN算法和数据挖掘聚类算法

时间:2011-04-16 11:18:13

标签: algorithm data-mining cluster-analysis dbscan

如何在分类数据(蘑菇数据集)上实施DBSCAN算法?

什么是单程聚类算法?

你能为一次通过聚类算法提供伪代码吗?

2 个答案:

答案 0 :(得分:1)

您可以使用任意距离函数运行DBSCAN而无需对其进行任何更改。索引部分将更加困难,因此您可能只会获得O(n^2)复杂性。

但是如果仔细观察DBSCAN,它所做的只是计算距离,将它们与阈值进行比较,并计算对象。这是它的关键优势,它可以轻松应用于各种数据,您只需要定义距离函数和阈值。

我怀疑是否存在DBSCAN的一次通过版本,因为它依赖于成对距离。您可以修剪其中一些计算(这是索引发挥作用的地方),但基本上您需要将每个对象与每个其他对象进行比较,因此它位于O(n log n)而不是一次通过。

一次通过:我认为原始的k-means是一次通过算法。第一个k对象是你的初始手段。对于每个新对象,您选择关闭平均值并使用新对象更新它(递增)。只要您不对数据集进行另一次迭代,这就是“一次通过”。 (结果将比劳埃德风格的k-means更糟糕。)

答案 1 :(得分:-2)

阅读前k个项目并按住它们。计算它们之间的距离。

每个剩余的项目:

  • 找出最接近的k项,以及这两项之间的距离。

  • 如果长度超过k个项目中任意两个之间的最近距离,则可以将新项目与这两个项目之一交换,并且至少不会减少任何两个新k项目之间的最近距离。这样做是为了尽可能地增加这个距离。

假设所有项目的集合可以被划分为l< = k个集群,使得同一集群中的任何两个点之间的距离小于不同集群中的任何两个点之间的距离。然后在运行此算法后,您将从每个群集中保留至少一个点。

相关问题