is_isomorphic#
- scipy.cluster.hierarchy.is_isomorphic(T1, T2)[Quelle]#
Bestimmt, ob zwei verschiedene Clusterzuweisungen äquivalent sind.
- Parameter:
- T1array_like
Eine Zuweisung von Singleton-Cluster-IDs zu Flat-Cluster-IDs.
- T2array_like
Eine Zuweisung von Singleton-Cluster-IDs zu Flat-Cluster-IDs.
- Rückgabe:
- bbool
Ob die Flat-Cluster-Zuweisungen T1 und T2 äquivalent sind.
Siehe auch
Hinweise
Array API-Unterstützung (experimentell): Wenn die Eingabe ein Lazy Array ist (z. B. Dask oder JAX), ist der Rückgabewert ein 0-dimensionales boolesches Array.
is_isomorphicbietet experimentelle Unterstützung für Python Array API Standard-kompatible Backends zusätzlich zu NumPy. Bitte erwägen Sie, diese Funktionen zu testen, indem Sie die UmgebungsvariableSCIPY_ARRAY_API=1setzen und CuPy-, PyTorch-, JAX- oder Dask-Arrays als Array-Argumente übergeben. Die folgenden Kombinationen von Backend und Gerät (oder anderer Funktionalität) werden unterstützt.Bibliothek
CPU
GPU
NumPy
✅
n/a
CuPy
n/a
⛔
PyTorch
✅
⛔
JAX
⚠️ siehe Hinweise
⛔
Dask
⚠️ siehe Hinweise
n/a
Siehe Unterstützung für den Array API Standard für weitere Informationen.
Beispiele
>>> from scipy.cluster.hierarchy import fcluster, is_isomorphic >>> from scipy.cluster.hierarchy import single, complete >>> from scipy.spatial.distance import pdist
Zwei Flat-Cluster-Zuweisungen können isomorph sein, wenn sie dieselbe Clusterzuweisung mit unterschiedlichen Labels darstellen.
Zum Beispiel können wir die Methode
scipy.cluster.hierarchy.singleverwenden und die Ausgabe auf vier Cluster reduzieren>>> 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)
Dies können wir dann auch mit der Methode
scipy.cluster.hierarchy.completetun:>>> 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)
Wie wir sehen können, erhalten wir in beiden Fällen vier Cluster und alle Datenpunkte sind gleich verteilt - das einzige, was sich ändert, sind die Flat-Cluster-Labels (3 => 1, 4 =>2, 2 =>3 und 4 =>1), daher sind beide Cluster-Zuweisungen isomorph
>>> is_isomorphic(T, T_) True