is_isomorphic — SciPy v1.15.3 Manual (original) (raw)
scipy.cluster.hierarchy.
scipy.cluster.hierarchy.is_isomorphic(T1, T2)[source]#
Determine if two different cluster assignments are equivalent.
Parameters:
T1array_like
An assignment of singleton cluster ids to flat cluster ids.
T2array_like
An assignment of singleton cluster ids to flat cluster ids.
Returns:
bbool
Whether the flat cluster assignments T1 and T2 are equivalent.
See also
for a description of what a linkage matrix is.
for the creation of flat cluster assignments.
Examples
from scipy.cluster.hierarchy import fcluster, is_isomorphic from scipy.cluster.hierarchy import single, complete from scipy.spatial.distance import pdist
Two flat cluster assignments can be isomorphic if they represent the same cluster assignment, with different labels.
For example, we can use the scipy.cluster.hierarchy.single: method and flatten the output to four clusters:
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)
We can then do the same using thescipy.cluster.hierarchy.complete: method:
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)
As we can see, in both cases we obtain four clusters and all the data points are distributed in the same way - the only thing that changes are the flat cluster labels (3 => 1, 4 =>2, 2 =>3 and 4 =>1), so both cluster assignments are isomorphic:
is_isomorphic(T, T_) True