scipy.cluster.hierarchy.

Anführer#

scipy.cluster.hierarchy.leaders(Z, T)[Quelle]#

Gibt die Wurzelknoten in einer hierarchischen Clusterbildung zurück.

Gibt die Wurzelknoten in einer hierarchischen Clusterbildung zurück, die einem Schnitt entsprechen, der durch einen flachen Cluster-Zuweisungsvektor T definiert ist. Weitere Informationen zum Format von T finden Sie in der Funktion fcluster.

Für jeden flachen Cluster \(j\) der \(k\) flachen Cluster, die im n-dimensionale flachen Cluster-Zuweisungsvektor T repräsentiert sind, findet diese Funktion den niedrigsten Clusterknoten \(i\) im Verknüpfungsbaum Z, so dass gilt:

  • die Blatt-Nachfahren gehören nur zum flachen Cluster j (d. h. T[p]==j für alle \(p\) in \(S(i)\), wobei \(S(i)\) die Menge der Blatt-IDs der Nachfahren-Blattknoten mit Clusterknoten \(i\) ist)

  • es existiert kein Blatt, das kein Nachfahre von \(i\) ist und auch zum Cluster \(j\) gehört (d. h. T[q]!=j für alle \(q\) nicht in \(S(i)\)). Wenn diese Bedingung verletzt ist, ist T kein gültiger Cluster-Zuweisungsvektor, und es wird eine Ausnahme ausgelöst.

Parameter:
Zndarray

Die hierarchische Clusterbildung, kodiert als Matrix. Weitere Informationen finden Sie unter linkage.

Tndarray

Der flache Cluster-Zuweisungsvektor.

Rückgabe:
Lndarray

Die Anführer-Verknüpfungsknoten-IDs, gespeichert als 1-D-Array mit k Elementen, wobei k die Anzahl der in T gefundenen flachen Cluster ist.

L[j]=i ist die Verknüpfungs-Clusterknoten-ID, die der Anführer des flachen Clusters mit der ID M[j] ist. Wenn i < n, bezieht sich i auf eine ursprüngliche Beobachtung, andernfalls auf einen nicht-einzelnen Cluster.

Mndarray

Die Anführer-Verknüpfungsknoten-IDs, gespeichert als 1-D-Array mit k Elementen, wobei k die Anzahl der in T gefundenen flachen Cluster ist. Dies ermöglicht es, dass die Menge der flachen Cluster-IDs eine beliebige Menge von k ganzen Zahlen ist.

Beispiel: Wenn L[3]=2 und M[3]=8, dann ist der Anführer des flachen Clusters mit der ID 8 der Verknüpfungsknoten 2.

Siehe auch

fcluster

für die Erstellung von flachen Cluster-Zuweisungen.

Hinweise

Array API-Unterstützung (experimentell): Diese Funktion gibt Arrays mit datenabhängiger Form zurück. In JAX ist dies zum Zeitpunkt der Erstellung dieser Dokumentation unmöglich, es innerhalb von @jax.jit auszuführen.

leaders verfügt über 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 eine Umgebungsvariable SCIPY_ARRAY_API=1 setzen und CuPy-, PyTorch-, JAX- oder Dask-Arrays als Array-Argumente bereitstellen. Die folgenden Kombinationen von Backend und Gerät (oder anderer Fähigkeit) werden unterstützt.

Bibliothek

CPU

GPU

NumPy

n/a

CuPy

n/a

PyTorch

JAX

⚠️ kein JIT

Dask

⚠️ führt Chunks zusammen

n/a

Siehe Unterstützung für den Array API Standard für weitere Informationen.

Beispiele

>>> from scipy.cluster.hierarchy import ward, fcluster, leaders
>>> from scipy.spatial.distance import pdist

Gegeben eine Verknüpfungsmatrix Z – erhalten nach Anwendung einer Cluster-Methode auf einen Datensatz X – und ein flacher Cluster-Zuweisungsarray T

>>> 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 = ward(pdist(X))
>>> Z
array([[ 0.        ,  1.        ,  1.        ,  2.        ],
       [ 3.        ,  4.        ,  1.        ,  2.        ],
       [ 6.        ,  7.        ,  1.        ,  2.        ],
       [ 9.        , 10.        ,  1.        ,  2.        ],
       [ 2.        , 12.        ,  1.29099445,  3.        ],
       [ 5.        , 13.        ,  1.29099445,  3.        ],
       [ 8.        , 14.        ,  1.29099445,  3.        ],
       [11.        , 15.        ,  1.29099445,  3.        ],
       [16.        , 17.        ,  5.77350269,  6.        ],
       [18.        , 19.        ,  5.77350269,  6.        ],
       [20.        , 21.        ,  8.16496581, 12.        ]])
>>> T = fcluster(Z, 3, criterion='distance')
>>> T
array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4], dtype=int32)

scipy.cluster.hierarchy.leaders gibt die Indizes der Knoten im Dendrogramm zurück, die die Anführer jedes flachen Clusters sind

>>> L, M = leaders(Z, T)
>>> L
array([16, 17, 18, 19], dtype=int32)

(denken Sie daran, dass die Indizes 0-11 auf die 12 Datenpunkte in X verweisen, während die Indizes 12-22 auf die 11 Zeilen von Z verweisen)

scipy.cluster.hierarchy.leaders gibt auch die Indizes der flachen Cluster in T zurück

>>> M
array([1, 2, 3, 4], dtype=int32)