【问题标题】:DBSCAN algorithm and clustering algorithm for data mining用于数据挖掘的 DBSCAN 算法和聚类算法
【发布时间】:2011-08-06 20:46:45
【问题描述】:

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

什么是一次性聚类算法?

您能否提供一次性聚类算法的伪代码?

【问题讨论】:

    标签: algorithm data-mining cluster-analysis dbscan


    【解决方案1】:

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

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

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

    One-pass:我相信最初的 k-means 是一种一次性算法。前 k 个对象是您的初始手段。对于每个新对象,您选择关闭均值并使用新对象(增量)更新它。只要您不对数据集进行另一次迭代,这就是“一次性”。 (虽然结果会比 lloyd 风格的 k-means 更糟糕)。

    【讨论】:

      【解决方案2】:

      读取前 k 个项目并持有它们。计算它们之间的距离。

      对于剩余的每一项:

      • 找出它最接近k个项目中的哪一个,以及这两个项目之间的距离。

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

      假设所有项目的集合可以划分为 l

      【讨论】:

        猜你喜欢
        • 2016-11-24
        • 2020-02-14
        • 1970-01-01
        • 2011-05-04
        • 2022-01-16
        • 2011-01-13
        • 2011-08-25
        • 1970-01-01
        • 2012-06-26
        相关资源
        最近更新 更多