scipy.cluster.hierarchy.is_isomorphic

scipy.cluster.hierarchy.is_isomorphic(T1, T2)[源代码]

确定两个不同的群集分配是否相等。

参数
T1array_like

将单一群集ID分配给平面群集ID。

T2array_like

将单一群集ID分配给平面群集ID。

退货
b布尔尔

平面群集分配是否 T1T2 是等价的。

参见

linkage

有关链接矩阵是什么的说明,请参阅。

fcluster

用于创建平面群集分配。

示例

>>> 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