2015-06-24 53 views
2

我有不同類別的元素需要分別聚類(根據它們的類別),然後全部聚合在一起。 每個元素都有一個位置(緯度,經度)。DBSCAN集羣簇(sklearn python)

我的目標是確定簇的簇(不同種類的基團)等在下面的圖片(在同一類別中不同元素的基團): http://i.imgur.com/V5Dovcf.png

在我的情況兩個元件之間的距離,該距離應該包含在一個簇中的距離與兩簇簇之間的距離相同。 例如在藍色羣集的圖片中。由於此藍色羣集中的所有元素最多(距離羣集的任何元素)的距離最大爲d,因此它們屬於藍色羣集。它是紅色的集羣一樣,我們包括由d的距離最多

分離的元素對於DBSCAN我可以很容易地找到所有這些要素的集羣,如果我輸入的所有元素一起提供。如果我想查找每個類別的集羣,那麼我將不得不提供僅作爲輸入的不同類別並逐個運行DBSCAN。但我想應該比運行多次DBSCAN要快得多,以獲得這些羣集羣

回答

0

爲什麼你認爲將你想分開的類別混合會更快?

首先執行廉價操作,例如分割數據集。然後獨立處理每個分區。

據我所知,scipy無法加速大地測量距離。所以你將不得不做O(n^2)距離計算。如果你有10個類別,如果你可以將它分成這樣的分區,並且運行DBSCAN 10次,你的問題得到的速度會快10倍,因爲每次運行的價格要便宜10^2!

0

在我看來,這裏的主要問題是由於數據的多重表示或分層性質(類別中的類別和簇)。通常,如果距離基於奇異維度,則可以將兩個維度(例如,羣集距離和類別距離)杵狀,以形成新的單一維度,其中數據表示變得更簡單。可能this有幫助嗎?

一些材料,我發現可能會有所幫助: