簡體   English   中英

DBSCAN 集群甚至無法處理 40k 數據,但使用 python 和 sklearn 處理 10k 數據

[英]DBSCAN clustering is not working even on 40k data but working on 10k data using python and sklearn

我正在嘗試對我的數據集進行聚類。 我的數據集中有 700k 行。 我從中取出 40k 並嘗試在 python 和 sklearn 中進行 DBSCAN 集群。 我在 32 GB 內存上運行。 該算法運行了一整夜,但沒有完成,然后我手動停止了程序。

但是當我嘗試使用 10k 數據集時,它正在運行。

在數據集大小的情況下,DBSCAN 是否有任何限制?

我使用了以下代碼:

clustering = DBSCAN().fit(df)
pred_y = clustering.labels_

以及以下版本:

clustering = DBSCAN(eps=9.7, min_samples=2, algorithm='ball_tree', metric='minkowski', leaf_size=90, p=2).fit(df)
pred_y = clustering.labels_

如何在我的數據集中使用 DBSCAN 聚類?

[更新]

我們在這里談論多少列? 根據我使用 DBSCAN 的經驗,列數對性能的影響大於行數。 我傾向於在將數據擬合到 DBSCAN 之前使用 PCA 來降低維度——這顯着加快了聚類過程。

根據您提供的其他信息,我做了一個簡單的復制(警告:使用當前參數,它將運行很長時間):

import numpy as np

data_1k = np.random.random((1000, 4))
data_5k = np.random.random((5000, 4))
data_10k = np.random.random((10000, 4))
data_40k = np.random.random((40000, 4))

from sklearn.cluster import DBSCAN

clustering = DBSCAN(eps=9.7, min_samples=2, algorithm='ball_tree', metric='minkowski', leaf_size=90, p=2).fit(data_40k)
np.unique(clustering.labels_)

對於 10k 數據集,上述代碼將在幾秒鍾內執行,但對於 40k 數據集,它將處理它很長時間,這是由於eps參數的值非常高造成的。 您絕對確定它是您數據的“正確”值嗎?
對於我上面提供的示例,只需降低eps值(例如降低到0.08 )即可將過程加速到大約 3 秒。

如果eps=9.7確實是您的數據所需的值,我會考慮使用一些縮放器或可能有助於縮小值范圍的東西? (並降低eps值)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM