scipy.cluster.hierarchy.
is_isomorphic#
- scipy.cluster.hierarchy.is_isomorphic(T1, T2)[源代码]#
确定两个不同的聚类分配是否等效。
- 参数:
- T1类数组
单例聚类 ID 到扁平聚类 ID 的分配。
- T2类数组
单例聚类 ID 到扁平聚类 ID 的分配。
- 返回:
- bbool
扁平聚类分配 T1 和 T2 是否等效。
示例
>>> from scipy.cluster.hierarchy import fcluster, is_isomorphic >>> from scipy.cluster.hierarchy import single, complete >>> from scipy.spatial.distance import pdist
如果两个扁平聚类分配代表相同的聚类分配,但标签不同,则它们可以是同构的。
例如,我们可以使用
scipy.cluster.hierarchy.single
方法并将输出扁平化为四个聚类>>> X = [[0, 0], [0, 1], [1, 0], ... [0, 4], [0, 3], [1, 4], ... [4, 0], [3, 0], [4, 1], ... [4, 4], [3, 4], [4, 3]]
>>> Z = single(pdist(X)) >>> T = fcluster(Z, 1, criterion='distance') >>> T array([3, 3, 3, 4, 4, 4, 2, 2, 2, 1, 1, 1], dtype=int32)
然后,我们可以使用
scipy.cluster.hierarchy.complete
方法执行相同的操作>>> Z = complete(pdist(X)) >>> T_ = fcluster(Z, 1.5, criterion='distance') >>> T_ array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4], dtype=int32)
正如我们所看到的,在这两种情况下,我们都获得了四个聚类,并且所有数据点都以相同的方式分布 - 唯一改变的是扁平聚类标签(3 => 1,4 => 2,2 => 3 和 4 => 1),因此两个聚类分配是同构的
>>> is_isomorphic(T, T_) True