如果您在python中的scipy中具有此层次结构的集群调用:

from scipy.cluster.hierarchy import linkage
# dist_matrix is long form distance matrix
linkage_matrix = linkage(squareform(dist_matrix), linkage_method)

那么从这到单个点的群集分配的一种有效方法是什么?即长度为N的向量,其中N是点数,其中每个条目i是点i的集群数,给定阈值thresh在生成的集群上生成的集群数?

需要说明的是:群集号将是在将阈值应用于树之后的所在群集。在这种情况下,您将为其所在的群集的每个叶节点获得一个唯一的群集。在每个意义上,每个点都属于一个“最特定的群集”,这是唯一的,该群集由切割树状图的阈值定义。

我知道scipy.cluster.hierarchy.fclusterdata会给您这个集群分配作为其返回值,但是我是从定制的距离矩阵和距离度量开始的,所以我不能使用fclusterdata。问题归结为:我如何计算正在计算的fclusterdata-群集分配?

最佳答案

如果我理解正确,那是fcluster所做的:

因此,只需调用fcluster(linkage_matrix, t),其中t是您的阈值。

关于python - 如何在Python中从Scipy中的链接/距离矩阵计算群集分配?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15951711/

10-12 16:41