如果你在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
正在计算的东西--集群分配?
1条答案
按热度按时间e3bfsja21#
如果我没理解错的话,这就是fcluster的作用:
scipy.cluster.hierarchy.fcluster(Z, t, criterion='inconsistent', depth=2, R=None, monocrit=None)
从链接矩阵Z定义的层次聚类形成平面聚类。
...
返回:长度为n的数组。T[i]是原始观测i所属的平面聚类编号。
因此,只需调用
fcluster(linkage_matrix, t)
,其中t
是阈值。