scipy.cluster.hierarchy.

is_isomorphic#

scipy.cluster.hierarchy.is_isomorphic(T1, T2)[原始碼]#

判斷兩個不同的叢集分配是否等價。

參數:
T1array_like

單例叢集 ID 到扁平叢集 ID 的分配。

T2array_like

單例叢集 ID 到扁平叢集 ID 的分配。

回傳值:
bbool

扁平叢集分配 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