[英]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.