我想首先说,我对集群技术的了解非常有限,请不要太严厉地抨击我。
我有一组相当大的3D点(大约8000个)——想想X、Y、Z三元组,其中Z坐标表示地球地下的一个点(负)。我想使用集群的绝对最小数量对这些点进行集群,并有以下限制:
- 使用最少数量的簇
- 所有点都应该包括在集群中,这意味着任何点都应该至少属于一个集群
- 任何点与星团质心之间的最大距离(在地球表面Z=0处偏移)不应超过某个固定距离d
我想使用scikit学习k-means方法,通过迭代增加聚类数量,然后,对于数据集中的所有点,计算该点和聚类质心之间的距离(在Z=0处)是否小于所提供的特定距离。
当然,我对更好/更有效的建议持开放态度——例如,集群不需要像k-means返回的集群那样是循环的。它们可以是椭圆或其他任何东西,只要满足上述约束即可。
我欢迎任何建议,谢谢你的见解。
使用层次聚类。
具有完整的联动装置。
找到真正的最小覆盖是NP困难的。所以你不想这么做。但这应该会在"刚好"O(n³)中产生一个相当好的近似值。
这是基础知识。在寻找聚类算法时,至少要阅读维基百科的文章。最好是一些书,以获得概述。不只是k-均值。。。