【发布时间】:2020-05-03 01:32:19
【问题描述】:
我有以下脚本 (optics.py) 来估计具有预先计算距离的聚类:
from sklearn.cluster import OPTICS
import numpy as np
distances = np.load(r'distances.npy')
clust = OPTICS(metric='precomputed', n_jobs=-1)
clust = clust.fit(distances)
查看 htop 结果我可以看到只使用了一个 CPU 内核
尽管 scikit 在多个进程中运行集群:
为什么n_jobs=-1 没有导致使用所有 CPU 内核?
【问题讨论】:
-
@PV8 joblib 上下文在这里如何关联? OPTICS 中
n_jobs参数的 documentation 表示:“为邻居搜索运行的并行作业数。无表示 1,除非在 joblib.parallel_backend 上下文中。-1 表示使用所有处理器。”。我没有使用任何joblib.parallel_backend上下文,所以我希望 -1 使用所有 CPU 内核。除非有错误或某些限制。 -
在该文本的后面还提到他们仍在研究它,并且有一个 github 链接列出所有错误,我认为有一个错误
-
HDBSCAN 在此期间可能是一个不错的选择。两种方法都试图解决相同的问题(具有可变集群密度的 DBSCAN),并且 - 至少在我手中 - 通常会给出非常相似的结果。 HDBSCAN 实现目前使用up to 4 cores。
标签: python numpy scikit-learn optics-algorithm