scipy.cluster.hierarchy.

maxdists#

scipy.cluster.hierarchy.maxdists(Z)[Quelle]#

Gibt den maximalen Abstand zwischen beliebigen Nicht-Singleton-Clustern zurück.

Parameter:
Zndarray

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

Rückgabe:
maxdistsndarray

Ein Numpy-Array von Doubles der Größe (n-1); MD[i] repräsentiert den maximalen Abstand zwischen beliebigen Clustern (einschließlich Singletons) unterhalb und einschließlich des Knotens mit Index i. Genauer gesagt ist MD[i] = Z[Q(i)-n, 2].max(), wobei Q(i) die Menge aller Knotenindizes unterhalb und einschließlich des Knotens i ist.

Siehe auch

linkage

für eine Beschreibung, was eine Linkage-Matrix ist.

is_monotonic

zum Testen der Monotonie einer Linkage-Matrix.

Hinweise

maxdists verfügt über experimentelle Unterstützung für Backends, die mit dem Python Array API Standard kompatibel sind, zusätzlich zu NumPy. Bitte erwägen Sie, diese Funktionen zu testen, indem Sie die Umgebungsvariable SCIPY_ARRAY_API=1 setzen und CuPy-, PyTorch-, JAX- oder Dask-Arrays als Array-Argumente bereitstellen. Die folgenden Kombinationen aus 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

>>> from scipy.cluster.hierarchy import median, maxdists
>>> from scipy.spatial.distance import pdist

Gegeben eine Linkage-Matrix Z berechnet scipy.cluster.hierarchy.maxdists für jeden neu erzeugten Cluster (d. h. für jede Zeile der Linkage-Matrix) den maximalen Abstand zwischen zwei beliebigen Kindclustern.

Aufgrund der Natur der hierarchischen Clusterbildung ist dies in vielen Fällen nur der Abstand zwischen den beiden Kindclustern, die zum aktuellen zusammengeführt wurden – d. h. Z[:,2].

Bei nicht-monotonen Clusterzuweisungen wie der scipy.cluster.hierarchy.median-Clusterbildung ist dies jedoch nicht immer der Fall: Es kann Clusterbildungen geben, bei denen der Abstand zwischen den beiden zusammengeführten Clustern kleiner ist als der Abstand zwischen ihren Kindern.

Dies können wir an einem Beispiel sehen

>>> 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 = median(pdist(X))
>>> Z
array([[ 0.        ,  1.        ,  1.        ,  2.        ],
       [ 3.        ,  4.        ,  1.        ,  2.        ],
       [ 9.        , 10.        ,  1.        ,  2.        ],
       [ 6.        ,  7.        ,  1.        ,  2.        ],
       [ 2.        , 12.        ,  1.11803399,  3.        ],
       [ 5.        , 13.        ,  1.11803399,  3.        ],
       [ 8.        , 15.        ,  1.11803399,  3.        ],
       [11.        , 14.        ,  1.11803399,  3.        ],
       [18.        , 19.        ,  3.        ,  6.        ],
       [16.        , 17.        ,  3.5       ,  6.        ],
       [20.        , 21.        ,  3.25      , 12.        ]])
>>> maxdists(Z)
array([1.        , 1.        , 1.        , 1.        , 1.11803399,
       1.11803399, 1.11803399, 1.11803399, 3.        , 3.5       ,
       3.5       ])

Beachten Sie, dass, obwohl der Abstand zwischen den beiden Clustern, die beim Erstellen des letzten Clusters zusammengeführt wurden, 3,25 beträgt, es zwei Kinder (Cluster 16 und 17) gibt, deren Abstand größer ist (3,5). Daher gibt scipy.cluster.hierarchy.maxdists in diesem Fall 3,5 zurück.