问题标签 [hdbscan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
323 浏览

python - HDBSCAN 集群缓存和持久化

HDBSCAN 有一个标志来缓存其集群数据作为参数,如下所述:

现在我看到在指定位置创建了以下文件夹结构:

正如 HDBSCAN 文档所建议的那样,我们可以使用这些文件(可能是 pickle 文件)作为持久性存储,以后可以重新使用它来查找新数据点的集群标签。但我找不到这样做的方法。

0 投票
1 回答
60 浏览

hdbscan - 如何使用 HDBSCAN 对 5 维数据进行聚类

我正在尝试使用 HDBSCAN 对 NTU-RGB+D 120 骨架数据集进行聚类。骨架数据的numpy数组有5维

其中数据数 = 40091,坐标 = 3 (xyz),帧数 = 300,关节数 = 25,视频中的身体数 = 2

当我尝试使用 hdbscan 对其进行聚类时,拟合会引发一条错误消息,指出它只接受 2D 数据。我怎么能用 5 维做到这一点。我对使用骨架数据和聚类完全陌生。

0 投票
1 回答
298 浏览

python - HDBSCAN 集群中的任何对象都不应该具有 > 0 的概率值吗?并产生不一致的结果

我正在使用 hdbscan 在 Python Jupyter 笔记本的数据集中查找集群。

该数据看起来像这样:

数据

耶!一切似乎都奏效了!

所以我想看到一些结果,所以我将这些结果添加到我的数据框中:

但是等等,我有带有标签的行,这些行带有概率为 0 的集群的标签。这有什么意义?集群中的任何对象不应该具有 > 0 的概率值吗?哦,所有的概率都只有 0 或 1。

所以我在 Jupyter notebook 中重新运行,具体来说,我只是重新运行

clusterer.labels_我检查了and的值clusterer.probabilities_,它们是不同的。这件事不应该是一致的吗?为什么这些价值观会改变?是否有一些我没有被告知的隐藏状态?但是现在我clusterer.probabilities_的值介于 0 和 1 之间……所以这很好,对吧?

所以我显然对这个 hdbscan 工具不是很熟悉,但是有人可以解释为什么它在多次运行时会给出不同的答案,以及标记/聚集对象上的概率 0 是否有意义?

0 投票
1 回答
61 浏览

scikit-learn - HDBSCAN 集群选择

根据我的数据,我一直在使用HDBSCAN并拥有数百个集群。我正在尝试选择一些集群组进行进一步分析。寻找具有高集群间距离的集群,因为它比集群的其他部分更分散并且表现得有点离群。到目前为止,我正在使用 ( -1) 集群类别,但意识到cluster.probabilities_这些集群是0. 我需要这个值进行进一步分析。

我的问题是

  1. cluster.probabilities_score 对集群有什么影响?
  2. 有没有什么办法(除了选择-1集群类别)我可以选择其他一些可能存在异常值的集群?就像计算集群间距离或其他方式一样?
0 投票
1 回答
891 浏览

cluster-analysis - DBSCAN 或 HDBSCAN 是更好的选择?为什么?

哪种聚类方法被认为是 DBSCAN 和 HDBSCAN 中最好的,其背后的原因是什么?

0 投票
0 回答
160 浏览

python - HDBSCAN 近似预测总是返回 0 的概率

我正在使用HDBSCAN为给定的集群模型生成预测数据。然后,我尝试使用该approximate_predict函数对新点进行分类,以找到新点的正确聚类。该模型为新点返回正确的聚类,但概率/强度始终为 0.0。为了生成模型并对新点进行分类,我使用:

据我了解,如果强度/概率为 0.0,则该点被归类为噪声。通过对新点的手动分析,我可以看到它们确实适合原始集群的核心,所以我不明白为什么概率总是 0.0?

0 投票
1 回答
1871 浏览

python - 如何安装 HDBSCAN 模块、python 3.7、windows 10

我需要对我的数据使用 HDBSCAN 算法,但未安装该模块。我使用python 3.7。我对这种棘手的安装不是很熟悉,请谁能给我一个清晰易懂的说明如何安装HDBSCAN?

  • 我已经从以下位置下载了模块:https ://github.com/scikit-learn-contrib/hdbscan#egg=hdbscan

  • 我解压了

  • 我在看到setup.py文件的文件夹中打开了命令提示符

  • 我运行了以下命令:(python setup.py install --prefix="C:\ProgramData\Miniconda3\envs\py37_v1"在一行中)

我收到以下错误:“由于现在与 Python 3.7 hdbscan 不兼容” “需要安装 Cython 才能构建它” “找不到 Cython!请安装 cython 并重试”

0 投票
0 回答
19 浏览

hierarchical-clustering - 如何从 HDBSCAN 中的 condensed_tree pandas 输出中获取选定的集群?

我有一个来自 HDBSCAN 集群的 condensed_tree 对象。我能够将数据转换为 Pandas 格式,但我需要将数据过滤为 HDBSCAN 选择的集群。我该怎么做呢?

0 投票
1 回答
166 浏览

cupy - 在急流容器内时出现 hdbscan 错误

我在 rapidsai docker 容器内将 rapids UMAP 与 HDBSCAN 结合使用:rapidsai/rapidsai-core:0.18-cuda11.0-runtime-ubuntu18.04-py3.7

我得到一个错误,如果我使用它会修复core_dist_n_jobs=1但会使代码变慢:

-------------------------------------------------- ------------------------- 1 个集群中的 TerminatedWorkerError Traceback(最近一次调用最后一次)= hdbscan.HDBSCAN(min_cluster_size=1000, prediction_data=True, gen_min_span_tree =True) ----> 2 clusterer.fit(numpy_projected)

/opt/conda/envs/rapids/lib/python3.7/site-packages/hdbscan/hdbscan_.py in fit(self, X, y) 917 self._condensed_tree, 918 self._single_linkage_tree, --> 919 self._min_spanning_tree ) = hdbscan(X, **kwargs) 920 921 如果 self.prediction_data:

/opt/conda/envs/rapids/lib/python3.7/site-packages/hdbscan/hdbscan_.py in hdbscan(X, min_cluster_size, min_samples, alpha, cluster_selection_epsilon, metric, p, leaf_size, algorithm, memory, approx_min_span_tree, gen_min_span_tree , core_dist_n_jobs, cluster_selection_method, allow_single_cluster, match_reference_implementation, **kwargs) 613 approx_min_span_tree, 614 gen_min_span_tree, --> 615 core_dist_n_jobs, **kwargs) 616 else: # Metric is a valid BallTree metric 617 # TO DO: 需要启发式来决定何时去博鲁夫卡;

/opt/conda/envs/rapids/lib/python3.7/site-packages/joblib/memory.py in call (self, *args, **kwargs) 350 351 def call (self, *args, **kwargs) : --> 352 return self.func(*args, **kwargs) 353 354 def call_and_shelve(self, *args, **kwargs):

/opt/conda/envs/rapids/lib/python3.7/site-packages/hdbscan/hdbscan_.py in _hdbscan_boruvka_kdtree(X,min_samples,alpha,metric,p,leaf_size,approx_min_span_tree,gen_min_span_tree,core_dist_n_jobs,**kwargs)276 leaf_size=leaf_size // 3, 277 approx_min_span_tree=approx_min_span_tree, --> 278 n_jobs=core_dist_n_jobs, **kwargs) 279 min_spanning_tree = alg.spanning_tree() 280 # 按权重排序 min_spanning_tree 的边

hdbscan/_hdbscan_boruvka.pyx 在 hdbscan._hdbscan_boruvka.KDTreeBoruvka 算法中。初始化()

hdbscan/_hdbscan_boruvka.pyx in hdbscan._hdbscan_boruvka.KDTreeBoruvkaAlgorithm._compute_bounds()

/opt/conda/envs/rapids/lib/python3.7/site-packages/joblib/parallel.py in call (self, iterable) 1052 1053 with self._backend.retrieval_context(): -> 1054 self.retrieve() 1055 # 确保我们收到最后一条消息,告诉我们完成了 1056
elapsed_time = time.time() - self._start_time

/opt/conda/envs/rapids/lib/python3.7/site-packages/joblib/parallel.py in retrieve(self) 931 try: 932 if getattr(self._backend, 'supports_timeout', False): --> 933 self._output.extend(job.get(timeout=self.timeout)) 934 else: 935 self._output.extend(job.get())

/opt/conda/envs/rapids/lib/python3.7/site-packages/joblib/_parallel_backends.py in wrap_future_result(future, timeout) 540 AsyncResults.get from multiprocessing.""" 541 try: --> 542 return future .result(timeout=timeout) 543 除了 CfTimeoutError as e: 544 raise TimeoutError from e

/opt/conda/envs/rapids/lib/python3.7/concurrent/futures/_base.py in result(self, timeout) 433 raise CancelledError() 434 elif self._state == FINISHED: --> 435 return self. __get_result() 436 else: 437 引发 TimeoutError()

/opt/conda/envs/rapids/lib/python3.7/concurrent/futures/_base.py in __get_result(self) 382 def __get_result(self): 383 if self._exception: --> 384 raise self._exception 385 else : 386 返回 self._result

TerminatedWorkerError:执行器管理的工作进程意外终止。这可能是由于调用函数时出现分段错误或内存使用过多导致操作系统杀死工作人员造成的。

工人的退出代码是 {EXIT(1)}

有没有办法解决这个问题,但仍然保持 HDBSCAN 快速?

0 投票
1 回答
2165 浏览

python - hdbscan 问题(ValueError:numpy.ndarray 大小已更改,可能表示二进制不兼容。预期 C 标头为 88,从 PyObject 获得 80)

我知道很多人之前已经发布过这个问题,但我仍然无法解决我的错误。我正在尝试导入 hdbscan 但它不断返回以下错误

我曾尝试卸载 numpy 1.19.5 并安装 numpy 1.20,但它对我不起作用。我已经安装了包 hdbscan 0.8.27,我使用的是 Python 3.7.2,但我没有 MacBook 的管理员权限。感谢任何帮助!