在过去的几周里,我一直在尝试HDBSCAN
使用python 3.7
. 有问题的数据大约是 400 万行 x 40 列,格式约为GB
1.5 CSV
。它是整数、布尔值和最多 9 位浮点数的混合体。
在此期间,每次我能够将数据收集到集群中都需要 3 天多的时间,这似乎很奇怪,HDBSCAN
因为它的速度很受推崇,我在一个 96 cpu 的谷歌云计算实例上运行它。我花了几天时间试图让它利用云实例的处理能力,但无济于事。
使用 中的自动算法检测HDBSCAN
,它选择 boruvka_kdtree 作为最佳算法使用。而且我尝试将各种值传递给 core_dist_n_jobs 参数。从 -2,-1, 1, 96, multiprocessing.cpu_count()
, 到 300。所有这些似乎都具有相似的效果,即导致 4 个主要 python 进程利用完整的核心,同时产生更多的睡眠进程。
我拒绝相信我做对了,这确实是这个硬件需要多长时间。我确信我必须遗漏类似JupyterHub
在同一台机器上使用会导致某种GIL
锁定的问题,或者我遗漏了HDBSCAN
.
这是我目前的电话HDBSCAN
:
hdbscan.HDBSCAN(min_cluster_size = 100000, min_samples = 500, algorithm='best', alpha=1.0, memory=mem, core_dist_n_jobs = multiprocessing.cpu_count())
我已经关注了我能找到的与这个问题相关的所有现有问题和帖子,到目前为止没有任何工作,但我总是尝试甚至激进的想法,因为这甚至不是我想要集群的完整数据这个速度需要 4 年才能对完整数据进行聚类!