【问题标题】:Python K-Means clustering and maximum distancePython K-Means 聚类和最大距离
【发布时间】:2019-06-01 06:44:29
【问题描述】:

首先我想说的是,我对聚类技术的了解非常有限,请不要太严厉地抨击我。

我有一组相当大的 3D 点(大约 8,000 个) - 想一想 X、Y、Z 三元组,其中 Z 坐标代表地下地球中的一个点(负)。我想使用绝对最小数量的聚类对这些点进行聚类,并具有以下约束:

  1. 使用最少数量的集群
  2. 所有点都应包含在聚类中,这意味着任何点都应至少属于一个聚类
  3. 任何点与簇质心(在地球表面上以 Z=0 偏移)之间的最大距离不应超过某个固定距离d

我正在考虑使用 scikit-learn k-means 方法,通过迭代地增加集群的数量,然后,对于数据集中的所有点,计算该点与集群质心之间的距离(在 Z=0 处)是否为小于提供的具体距离。

当然,我愿意接受更好/更有效的建议——例如,集群不需要像 k-means 返回的那样是循环的。只要满足上述约束,它们可以是椭圆或其他任何东西。

我欢迎任何建议,感谢您的见解。

【问题讨论】:

标签: python scikit-learn cluster-analysis


【解决方案1】:

使用层次聚类。

具有完整的链接。

找到真正的最小覆盖是 NP 困难的。所以你不想这样做。但这应该会在“仅”O(n³) 中产生一个相当好的近似值。

这是基础知识。在寻找聚类算法时,至少阅读维基百科的文章。最好甚至是一些书,以获得概述。不只是 k-means...

【讨论】:

  • 感谢您的回答和反对。阅读 StackOverflow 时会有点遗憾地注意到,人们真的必须小心关于集群的问题 - 或招致你的反对。但是,这无关紧要;我认为具有完整链接的层次聚类是有效的——但它没有:最大距离“约束”是集群中任意两点之间的距离——而不是质心和其中任何点之间的距离。我可以将距离加倍,但我可以保证会有比我想要的距离更远的点。
  • 嗯,还有很多变种,但还不是你想要的。你也可以定义你自己的,你知道的......但是有LEADER,例如质心联动和MiniMax联动。只需阅读一点(包括早期的问题,因此因缺乏研究而被否决)。 stats.stackexchange.com/questions/303553/…
猜你喜欢
  • 2013-04-22
  • 2018-09-30
  • 2023-02-08
  • 2016-08-14
  • 2016-02-01
  • 2013-02-02
  • 2017-09-16
  • 2015-04-11
  • 2016-05-29
相关资源
最近更新 更多