scipy.cluster.hierarchy.

optimal_leaf_ordering#

scipy.cluster.hierarchy.optimal_leaf_ordering(Z, y, metric='euclidean')[Quelle]#

Gegebene eine Linkagematrix Z und Distanzen, ordnen Sie den geschnittenen Baum neu an.

Parameter:
Zndarray

Die hierarchische Clusterbildung, kodiert als Linkagematrix. Weitere Informationen zur Rückgabestruktur und zum Algorithmus finden Sie unter linkage.

yndarray

Die kondensierte Distanzmatrix, aus der Z generiert wurde. Alternativ kann eine Sammlung von m Beobachtungsvektoren in n Dimensionen als m x n-Array übergeben werden.

metricstr oder Funktion, optional

Die Distanzmetrik, die verwendet werden soll, falls y eine Sammlung von Beobachtungsvektoren ist; wird andernfalls ignoriert. Eine Liste gültiger Distanzmetriken finden Sie in der Funktion pdist. Es kann auch eine benutzerdefinierte Distanzfunktion verwendet werden.

Rückgabe:
Z_orderedndarray

Eine Kopie der Linkagematrix Z, neu geordnet, um die Distanz zwischen benachbarten Blättern zu minimieren.

Hinweise

optimal_leaf_ordering 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

Dask

⚠️ führt Chunks zusammen

n/a

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

Beispiele

>>> import numpy as np
>>> from scipy.cluster import hierarchy
>>> rng = np.random.default_rng()
>>> X = rng.standard_normal((10, 10))
>>> Z = hierarchy.ward(X)
>>> hierarchy.leaves_list(Z)
array([0, 3, 1, 9, 2, 5, 7, 4, 6, 8], dtype=int32)
>>> hierarchy.leaves_list(hierarchy.optimal_leaf_ordering(Z, X))
array([3, 0, 2, 5, 7, 4, 8, 6, 9, 1], dtype=int32)