python - 根据空间接近度对几何点进行分组

标签 python scikit-learn cluster-analysis dbscan

我在 3D 空间中有以下几点:

enter image description here

我需要根据 D_maxd_max 对点进行分组:

D_max = max dimension of each group
d_max = max distance of points inside each group

像这样:

enter image description here

上图中组的形状看起来像一个盒子,但形状可以是分组算法输出的任何形状。


我正在使用 Python 并使用 Blender 可视化结果。我正在考虑使用 scipy.spatial.KDTree并调用它的 query API,但是,我不确定这是否是手头工作的正确工具。我担心可能有一个我不知道的更好的工具。我很想知道是否有任何其他工具/库/算法可以帮助我。


正如@CoMartel 指出的那样,有 DBSCAN还有HDBSCAN clustering看起来很适合此类问题的模块。但是,正如@Paul 指出的那样,他们缺少与我的 D_max 参数相关的集群最大大小的选项。我不确定如何向 DBSCAN 和 HDBSCAN 集群添加最大集群大小功能。


感谢@Anony-Mousse 我看了Agglomerative Clustering: how it worksHierarchical Clustering 3: single-link vs. complete-link我正在学习Comparing Python Clustering Algorithms ,我觉得这些算法是如何工作的越来越清楚了。

最佳答案

应要求,我的评论作为答案:

您可以使用 DBSCAN( http://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html ) 或 HDBSCAN。

这两种算法都允许根据 d_max(同一数据集的两点之间的最大距离)对每个点进行分组,但它们不采用最大簇大小。限制集群最大大小的唯一方法是减少 eps 参数,该参数控制同一集群的 2 点之间的最大距离。

关于python - 根据空间接近度对几何点进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50483601/

相关文章:

python - 从 Rpy2 到 R 聚类的馈送距离矩阵

python - 创建包含积极元素的新列表

c++ - 如何在 C++ 服务器应用程序和 Django Web 应用程序之间进行通信

python - Python单链表,pop和push怎么写?

python - Python 中 Float 错误的无效文字

python - scikit-learn 随机森林过度使用内存

machine-learning - 如何选择和使用不同数据类型的特征?

python - 如何对具有 nans 的时间序列数据使用 k-means?

r - R中的聚类分析期间"NAs introduced by coercion"

Python 参数解析器,在 -h 之前引发异常