如何在Python中的scipy中从链接/距离矩阵计算集群分配?

22 python numpy cluster-analysis scipy

如果您在Python中使用scipy进行此分层聚类调用:

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

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

澄清一下:群集号将是在向树应用阈值后所处的群集.在这种情况下,您将为其所在的集群的每个叶节点获得一个唯一的集群.从某种意义上说,每个点都属于一个"最具体的集群",它由您剪切树形图的阈值定义.

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

Bre*_*arn 22

如果我理解你,那就是fcluster所做的:

scipy.cluster.hierarchy.fcluster(Z, t, criterion='inconsistent', depth=2, R=None, monocrit=None)

从由链接矩阵Z定义的层次聚类中形成平面簇.

...

返回:长度为n的数组.T [i]是原始观察所属的平面簇编号.

所以,请致电fcluster(linkage_matrix, t),t您的门槛在哪里.