DBSCAN集群集群(sklearn python)

时间:2015-06-24 14:50:49

标签: python scikit-learn cluster-computing dbscan

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

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

在我的情况下,应该包含在群集中的两个元素之间的距离与两个群集群之间的距离相同。 例如,在带有蓝色群集的图片中。由于此蓝色群集中的所有元素最多分别距离 d (来自群集的任何元素),因此它们属于蓝色群集。红色星团的情况也是如此,其中我们包含的元素间隔最远 d

使用DBSCAN,如果我将所有元素作为输入提供,我可以很容易地找到所有这些元素的簇。如果我想找到每个类别的集群,那么我将只提供不同类别的输入并逐个运行DBSCAN。但我想应该有比DBSCAN多次运行以获得这些集群的速度快得多的东西

2 个答案:

答案 0 :(得分:0)

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

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

据我所知,scipy不能加速大地距离。所以你必须进行O(n ^ 2)距离计算。如果你有10个类别,如果你可以将它分成这样的分区,你的问题会得到10倍更快,并且运行DBSCAN 10次,因为每次运行要便宜10 ^ 2倍!

答案 1 :(得分:0)

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

也许this有帮助?

我发现的一些材料可能会有所帮助: