问题标签 [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.
python - 解释 HDBSCAN 聚类的行为
我有一个包含 6 个元素的数据集。我使用 Gower 距离计算了距离矩阵,得到了以下矩阵:
通过查看这个矩阵,我可以看出元素#0 与元素#4 和#5 最相似,所以我假设 HDBSCAN 的输出是将它们聚集在一起,并假设其余的是异常值;然而,事实并非如此。
形成的集群:
集群 0: {元素 #0,元素 #2}
集群 1: {元素 #4,元素 #5}
异常值: {元素#1,元素#3}
这是我不明白的行为。此外,这两个参数似乎都对我的结果没有影响cluster_selection_epsilon
,cluster_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 不会聚集在一起)
python - 使用 UMAP 和 HDBScan 进行集群
我有大量的文本数据,大约有 5000 人输入。我使用 Doc2vec 为每个人分配了一个向量,使用 UMAP 减少到二维并使用 HDBSCAN 突出显示包含在其中的组。目的是突出具有相似主题相似性的组。这导致了下面的散点图。
这看起来可以接受。但是,当我在 Bokeh 中使用相同的数据(以创建交互式图表)时,输出看起来非常不同。尽管使用了与以前相同的坐标和组,但之前看到的清晰分组已经消失了。相反,图表是一团糟,所有颜色都混合在一起。
当应用过滤器来选择一个随机组时,这些点在整个绘图中分布得非常好,无论如何都不像一个有凝聚力的“组”。例如,第 41 组在图的每个角落附近都有点。
使用以下代码将文档向量简化为 X、Y 坐标:
并使用此代码分配组:
使用此代码生成的具有清晰组的 Matplotlib 图:
然后将其插入到 Pandas Dataframe 中:
并创建了散景图:
我在这里做错了吗?或者这是技术或数据的限制?我在初始情节中的彩色组是否真的按他们的组分组,如果是这样,为什么散景图中的不是?
任何帮助都将不胜感激。
python - 如何使用 HDBSCAN 正确聚类一维数据集?
我下面的数据集显示了每个价格的产品销售额(下载数据集 csv 的链接):
我想要实现的是使用 HDBSCAN 和 sklearn 对密集区域(下面的矩形)进行聚类。我们有四个区域,但是区域 3 和 4 也可以组合成一个大区域,通过更改函数调用中 的参数min_cluster_size和min_samples ,这将导致整个数据集上只有 3 个区域。
这是我的代码:
问题是结果,聚类没有按预期工作(下图 x 上图)。它对幅度进行聚类,而不是算法中提到的密集区域。我在代码中遗漏了什么?
我已经尝试了以下事情:规范化数据(两个轴)并在调用 HDBSCAN 类之前交换轴。任何帮助,将不胜感激。我有点迷失在这段代码中,但我认为通过阅读文档可以直接解决这个特定问题,因为 HDBSCAN 可以很好地处理密度和噪声。
python - HDBSCAN:ValueError:numpy.ndarray 大小已更改,可能表示二进制不兼容。预期来自 C 标头的 88,从 PyObject 获得 80
我尝试初始化 HDBSCAN 以在 JupytherLab 中进行聚类。我使用 Python 3.7.6 ..
总是出现相同的错误(见标题),直到现在我不知道它究竟来自什么。
我在解决方案后查看了几篇帖子,但直到现在还没有解决方案对我有帮助。
例如:
- 卸载并安装了numpy。
- 安装 numpy >= 1.20.0
- 尝试过像 pip install package --no-cache-dir --no-binary 这样的行:所有:
- 尝试了以下包版本组合: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 安装的。
我开始想,问题可能更深——但也许我忽略了一些重要的事情。
有人可以帮我找到错误吗?
此致
菲利普
python - 绘制单个集群
我正在使用 HDBSCAN,我只想绘制一个数据集群。
这是我当前的代码:
我知道数据有 3 个集群,但我怎样才能只绘制其中一个?
如果我有一个聚类点,我怎么知道熊猫数据框的哪一列对应于那个点?
python - 为 python 安装 hdbscan 包时遇到问题:“没有名为‘hdbscan’的模块”错误
我想在我的 Ubuntu 虚拟机上运行一个用 Python 编写的算法。它需要导入 hdbscan 模块。因此,我想将它安装在我的虚拟机上。
按照Pypi.org 关于这个库的文档,我简单地运行了:
几分钟后,它返回:
但是,如果我运行我的算法,它仍然说有“ No module named 'hdbscan'
”。
我试过pip uninstall hdbscan
但它然后返回:
我已经尝试了几个命令来解决这个问题,例如
sudo apt --reinstall install hdbscan
或
pip install --upgrade git+https://github.com/scikit-learn-contrib/hdbscan.git#egg=hdbscan
结果我得到的只是“成功安装”或“已满足要求”,但我的算法仍然无法使用它,“未安装”或“无法找到包 hdbscan”,因为我尝试了一个或另一个命令。
我不知道问题的原因是什么,也不知道如何解决。谁能帮帮我?
python - UMAP / HDBSCAN 增强集群 - 官方教程 - 错误:“工人的退出代码是 {EXIT(1)}”
- 我将通过官方教程。
- 我有 256 GB 内存,所以应该没问题。
- 它只是在启动 HDBSCAN 部分后 1 秒内死亡。
a.) CODE = 官方教程,官方数据集
a.) ERROR = 官方教程,官方数据集
b.) HDBSCAN官方文档的代码
b.) HDBSCAN 错误
类似问题
- 他有一个代码非常相似的工作代码,我有一个错误 -使用 UMAP 和 HDBScan 进行聚类
python - HDBSCAN 处理大型数据集
我正在尝试使用 HDBSCAN 算法在包含 146,000 个观察值的大型数据集上实现聚类。当我使用(默认)Minkowski/Euclidean 距离度量对这些观察结果进行聚类时,整个数据的聚类很顺利,只需要 8 秒。但是,我正在尝试使用我自己的指标执行聚类。在对数据子集进行操作时,这很好,尽管速度要慢得多。但是,当尝试在完整数据集上实现它时,我立即遇到内存错误。这是有道理的,因为由于数据集的大小,成对距离矩阵将占用大约 150GB。然而,这让我想知道使用默认度量如何没有这样的问题,同时查看 HDBSCAN 源代码显示在这种情况下还调用了 Sklearn 的成对距离,这将返回整个矩阵。
我的指标代码和一些结果:
hierarchical-clustering - HDBSCAN 用于离散整数特征(非分类)
我正在尝试使用诸如 HDBSCAN 之类的聚类算法来使用所有离散(int)的特征来查找一系列点的异常值和聚类。这些特征不是分类的,它们是用来表示序数的特征(例如考虑天数)。我想使用 HDBSCAN 因为我事先不知道集群的数量,所以这是最简单最直接的方法,并且在处理其他问题(使用 cont 变量)之前对我来说效果很好。
但是,当我尝试使用它时,我得到了可怕的结果,而且我不确定我是否理解发生了什么。例如,考虑以下带有一些样本的数组。
除了一个点外,所有点都是相同的,所以我希望有 1 个聚类和 1 个异常值/噪声,但我只得到样本中所有点的异常值/噪声标签。
那么这个算法适合离散特征还是我更好地尝试其他聚类方法?我如何使用 HDBSCAN 来解决这类问题?我读过马氏距离可能有用,但我不清楚这个指标有什么帮助。