问题标签 [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 投票
1 回答
451 浏览

python - 解释 HDBSCAN 聚类的行为

我有一个包含 6 个元素的数据集。我使用 Gower 距离计算了距离矩阵,得到了以下矩阵:

在此处输入图像描述

通过查看这个矩阵,我可以看出元素#0 与元素#4 和#5 最相似,所以我假设 HDBSCAN 的输出是将它们聚集在一起,并假设其余的是异常值;然而,事实并非如此。

形成的集群:

集群 0: {元素 #0,元素 #2}

集群 1: {元素 #4,元素 #5}

异常值: {元素#1,元素#3}

这是我不明白的行为。此外,这两个参数似乎都对我的结果没有影响cluster_selection_epsiloncluster_selection_method我不明白为什么。

我尝试再次将参数更改为min_cluster_size=2, min_samples=1

形成的集群:

集群 0: {元素#0,元素#2,元素#4,元素#5}

集群 1: {元素 #1,元素 #3}

参数的任何其他变化都会导致所有点都被归类为异常值。

cluster_selection_epsilon有人可以帮助解释这种行为,并解释为什么cluster_selection_method不影响形成的集群。我认为通过设置cluster_selection_epsilon为 0.1,我将确保群集内的点之间的距离为 0.1 或更小(例如,元素 #0 和元素 #2 不会聚集在一起)

下面是两个聚类试验的直观表示: 在此处输入图像描述

在此处输入图像描述

0 投票
0 回答
304 浏览

python - 使用 UMAP 和 HDBScan 进行集群

我有大量的文本数据,大约有 5000 人输入。我使用 Doc2vec 为每个人分配了一个向量,使用 UMAP 减少到二维并使用 HDBSCAN 突出显示包含在其中的组。目的是突出具有相似主题相似性的组。这导致了下面的散点图。

使用 UMAP 和 HDBSCAN 创建的散点图

这看起来可以接受。但是,当我在 Bokeh 中使用相同的数据(以创建交互式图表)时,输出看起来非常不同。尽管使用了与以前相同的坐标和组,但之前看到的清晰分组已经消失了。相反,图表是一团糟,所有颜色都混合在一起。

散景图

当应用过滤器来选择一个随机组时,这些点在整个绘图中分布得非常好,无论如何都不像一个有凝聚力的“组”。例如,第 41 组在图的每个角落附近都有点。

使用以下代码将文档向量简化为 X、Y 坐标:

并使用此代码分配组:

使用此代码生成的具有清晰组的 Matplotlib 图:

然后将其插入到 Pandas Dataframe 中:

并创建了散景图:

我在这里做错了吗?或者这是技术或数据的限制?我在初始情节中的彩色组是否真的按他们的组分组,如果是这样,为什么散景图中的不是?

任何帮助都将不胜感激。

0 投票
1 回答
209 浏览

python - 如何使用 HDBSCAN 正确聚类一维数据集?

我下面的数据集显示了每个价格的产品销售额(下载数据集 csv 的链接):

我想要实现的是使用 HDBSCAN 和 sklearn 对密集区域(下面的矩形)进行聚类。我们有四个区域,但是区域 3 和 4 也可以组合成一个大区域,通过更改函数调用中 的参数min_cluster_sizemin_samples ,这将导致整个数据集上只有 3 个区域。在此处输入图像描述

这是我的代码:

在此处输入图像描述

在此处输入图像描述

问题是结果,聚类没有按预期工作(下图 x 上图)它对幅度进行聚类,而不是算法中提到的密集区域。我在代码中遗漏了什么? 在此处输入图像描述

我已经尝试了以下事情:规范化数据(两个轴)并在调用 HDBSCAN 类之前交换轴。任何帮助,将不胜感激。我有点迷失在这段代码中,但我认为通过阅读文档可以直接解决这个特定问题,因为 HDBSCAN 可以很好地处理密度和噪声。

0 投票
2 回答
537 浏览

python - HDBSCAN:ValueError:numpy.ndarray 大小已更改,可能表示二进制不兼容。预期来自 C 标头的 88,从 PyObject 获得 80

我尝试初始化 HDBSCAN 以在 JupytherLab 中进行聚类。我使用 Python 3.7.6 ..

总是出现相同的错误(见标题),直到现在我不知道它究竟来自什么。

我在解决方案后查看了几篇帖子,但直到现在还没有解决方案对我有帮助。

例如:

  1. 卸载并安装了numpy。
  2. 安装 numpy >= 1.20.0
  3. 尝试过像 pip install package --no-cache-dir --no-binary 这样的行:所有:
  4. 尝试了以下包版本组合:hdbscan=0.8.19,matplotlib=3.2.2,numpy=1.15.4,pandas=0.23.4,scikit-learn=0.20.1,scipy=1.1.0,tensorflow=1.13.1。

我也尝试过安装 tensorboard 之类的软件包,但没有帮助。一切都是通过终端和 pip 安装的。

我开始想,问题可能更深——但也许我忽略了一些重要的事情。

有人可以帮我找到错误吗?

此致

菲利普

0 投票
1 回答
55 浏览

python - 绘制单个集群

我正在使用 HDBSCAN,我只想绘制一个数据集群。

这是我当前的代码:

我知道数据有 3 个集群,但我怎样才能只绘制其中一个?

如果我有一个聚类点,我怎么知道熊猫数据框的哪一列对应于那个点?

0 投票
2 回答
693 浏览

python - 为 python 安装 hdbscan 包时遇到问题:“没有名为‘hdbscan’的模块”错误

我想在我的 Ubuntu 虚拟机上运行一个用 Python 编写的算法。它需要导入 hdbscan 模块。因此,我想将它安装在我的虚拟机上。

按照Pypi.org 关于这个库的文档,我简单地运行了:

几分钟后,它返回:

但是,如果我运行我的算法,它仍然说有“ No module named 'hdbscan'”。

我试过pip uninstall hdbscan但它然后返回:

我已经尝试了几个命令来解决这个问题,例如 sudo apt --reinstall install hdbscanpip install --upgrade git+https://github.com/scikit-learn-contrib/hdbscan.git#egg=hdbscan

结果我得到的只是“成功安装”或“已满足要求”,但我的算法仍然无法使用它,“未安装”或“无法找到包 hdbscan”,因为我尝试了一个或另一个命令。

我不知道问题的原因是什么,也不知道如何解决。谁能帮帮我?

0 投票
0 回答
91 浏览

python - UMAP / HDBSCAN 增强集群 - 官方教程 - 错误:“工人的退出代码是 {EXIT(1)}”

  • 我将通过官方教程
  • 我有 256 GB 内存,所以应该没问题。
  • 它只是在启动 HDBSCAN 部分后 1 秒内死亡。

a.) CODE = 官方教程,官方数据集

a.) ERROR = 官方教程,官方数据集

b.) HDBSCAN官方文档的代码

b.) HDBSCAN 错误

类似问题

0 投票
0 回答
25 浏览

python - hdbscan 已安装但无法导入

我尝试使用安装 hdbscanpip install hdbscan但它返回错误:

然后尝试使用conda install -c conda-forge hdbscan并成功:

在此处输入图像描述

但是,导入模块时会返回错误: 在此处输入图像描述

0 投票
1 回答
112 浏览

python - HDBSCAN 处理大型数据集

我正在尝试使用 HDBSCAN 算法在包含 146,000 个观察值的大型数据集上实现聚类。当我使用(默认)Minkowski/Euclidean 距离度量对这些观察结果进行聚类时,整个数据的聚类很顺利,只需要 8 秒。但是,我正在尝试使用我自己的指标执行聚类。在对数据子集进行操作时,这很好,尽管速度要慢得多。但是,当尝试在完整数据集上实现它时,我立即遇到内存错误。这是有道理的,因为由于数据集的大小,成对距离矩阵将占用大约 150GB。然而,这让我想知道使用默认度量如何没有这样的问题,同时查看 HDBSCAN 源代码显示在这种情况下还调用了 Sklearn 的成对距离,这将返回整个矩阵。

我的指标代码和一些结果:

0 投票
0 回答
25 浏览

hierarchical-clustering - HDBSCAN 用于离散整数特征(非分类)

我正在尝试使用诸如 HDBSCAN 之类的聚类算法来使用所有离散(int)的特征来查找一系列点的异常值和聚类。这些特征不是分类的,它们是用来表示序数的特征(例如考虑天数)。我想使用 HDBSCAN 因为我事先不知道集群的数量,所以这是最简单最直接的方法,并且在处理其他问题(使用 cont 变量)之前对我来说效果很好。

但是,当我尝试使用它时,我得到了可怕的结果,而且我不确定我是否理解发生了什么。例如,考虑以下带有一些样本的数组。

除了一个点外,所有点都是相同的,所以我希望有 1 个聚类和 1 个异常值/噪声,但我只得到样本中所有点的异常值/噪声标签。

那么这个算法适合离散特征还是我更好地尝试其他聚类方法?我如何使用 HDBSCAN 来解决这类问题?我读过马氏距离可能有用,但我不清楚这个指标有什么帮助。