考虑到两个集群之间的最小欧几里德距离 R,我需要将我的点聚类到未知数量的集群中。任何比这个最小距离更近的两个集群都应该合并并作为一个集群处理。
我可以从两个集群开始实现一个循环,直到我观察到比我的最小距离更接近的集群对。循环的上边界是我们需要聚类的点数。
是否有任何众所周知的算法和方法从点集估计质心的近似数量以及质心之间所需的最小距离?
我目前在 Python 下使用 FAISS,但有了正确的想法,我也可以自己在 C 中实现。
考虑到两个集群之间的最小欧几里德距离 R,我需要将我的点聚类到未知数量的集群中。任何比这个最小距离更近的两个集群都应该合并并作为一个集群处理。
我可以从两个集群开始实现一个循环,直到我观察到比我的最小距离更接近的集群对。循环的上边界是我们需要聚类的点数。
是否有任何众所周知的算法和方法从点集估计质心的近似数量以及质心之间所需的最小距离?
我目前在 Python 下使用 FAISS,但有了正确的想法,我也可以自己在 C 中实现。
是的,剪影方法(在sklearnas中实现silhouette_score)通常用于评估任何聚类算法(包括-means 或任何层次聚类算法)。粗略地说,您可以计算不同的轮廓值,那么你会选择具有最高的轮廓值。
如果您查看 Kaufman & Rousseeuw (1990),Finding Groups in Data,他们描述了一种评估凝聚聚类中聚类质量的算法。您使用特定值k运行聚类算法以获得所需的聚类数量,然后该例程会为您提供分数以反映聚类的凝聚力。如果您随后使用不同的k值再次聚类,您将获得另一个分数。你重复这个过程,直到你找到一个最大分数,然后你就得到了具有最佳聚类数的聚类。