【问题标题】:DBSCAN clusters of cluster (sklearn python)DBSCAN clusters of cluster (sklearn python)
【发布时间】:2015-09-10 20:24:18
【问题描述】:

我有不同类别的元素需要单独聚集(根据它们的类别),然后再聚集在一起。 每个元素都有一个位置(纬度、经度)。

我的目标是确定簇(同一类别中不同元素的组)的簇(不同类别的组),如下图所示: http://i.imgur.com/V5Dovcf.png

在我的例子中,应该包含在一个集群中的两个元素之间的距离与两个集群集群之间的距离相同。 例如在带有蓝色簇的图片中。由于这个蓝色簇中的所有元素最多(与簇中的任何元素)相隔 d 的距离,因此它们属于蓝色簇。对于红色集群也是如此,我们包含的元素之间的距离最多为 d

如果我将所有元素作为输入一起提供,我可以使用 DBSCAN 轻松找到所有这些元素的集群。如果我想找到每个类别的集群,那么我将不得不只提供不同的类别作为输入并一个一个地运行 DBSCAN。但我想应该有比运行多次 DBSCAN 更快的方法来获得这些集群

【问题讨论】:

    标签: python scikit-learn cluster-computing dbscan


    【解决方案1】:

    在我看来,这里的主要问题是由于数据的多表示或分层性质(类别和类别内的集群)。通常,如果距离基于奇异维度,则可以将两个维度(例如,聚类距离和类别距离)结合起来形成一个新的奇异维度,其中数据表示变得更简单。

    也许this 有帮助?

    我发现一些可能有用的材料:

    【讨论】:

      【解决方案2】:

      为什么你认为混合你想要分开的类别会更快?

      首先进行廉价操作,例如拆分数据集。然后独立处理每个分区。

      据我所知,scipy 无法加速大地距离。因此,您将不得不进行 O(n^2) 距离计算。如果您有 10 个类别,如果您可以将其拆分为这样的分区并运行 DBSCAN 10 次,那么您的问题将得到 10 倍,因为每次运行便宜 10^2 倍!

      【讨论】:

        猜你喜欢
        • 2019-03-04
        • 2017-01-13
        • 1970-01-01
        • 2019-04-11
        • 2019-07-16
        • 2018-01-08
        • 2018-02-26
        • 2020-09-24
        • 2016-08-01
        相关资源
        最近更新 更多