如果您在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
正在计算的内容--集群分配?
发布于 2013-04-16 03:18:18
如果我没理解错的话,这就是fcluster所做的:
scipy.cluster.hierarchy.fcluster(Z, t, criterion='inconsistent', depth=2, R=None, monocrit=None)
从由链接矩阵Z定义的分层聚类形成扁平聚类。
..。
返回:一个长度为n的数组。Ti是原始观察值i所属的平面簇号。
因此,只需调用fcluster(linkage_matrix, t)
,其中t
就是您的阈值。
发布于 2017-04-03 00:28:39
如果您想查看每个集群级别的成员以及它们的聚集顺序,请参阅https://stackoverflow.com/a/43170608/5728789
https://stackoverflow.com/questions/15951711
复制相似问题