我想在Python中实现一个“朋友中的朋友”算法,在这个算法中,对于N维空间中的一组点(在我的例子中,是二维的),如果两个点比给定的链接长度更近,就称为“朋友”,而一个朋友的朋友也是一个朋友(如果A是B和B的朋友,A也是C的朋友)。然后,将其中所有的朋友点集合成一个聚类,最终形成若干簇。其动机是,我通常有很强的聚类点,不同的聚类距离很远。我想在距离计算中允许任意度量(即不一定是欧几里得度量)。
我可以从头开始写下来,但我想知道它是否可以使用现有的库或一些基于智能数组的Python轻松地实现。
发布于 2022-02-16 23:40:27
您要寻找的是具有单个链接的聚类(也称为分层聚类)。
聚类是一种算法,在这种算法中,从单点开始,通过合并集群树生成集群树。
链接参数定义了如何合并这些集群。单个链接意味着在每个步骤中,您将合并两个簇,它们之间的最小距离是所有簇对中最小的。然后你可以选择一个截止点,最终得到你想要的东西。
它是在scikit中实现的--学习,您可以使用许多距离度量或提供自定义的距离矩阵。
https://scikit-learn.org/stable/modules/generated/sklearn.cluster.AgglomerativeClustering.html
https://stackoverflow.com/questions/71148531
复制相似问题