scipy.cluster.hierarchy.

median#

scipy.cluster.hierarchy.median(y)[Quelle]#

Führt eine Median/WPGMC-Verknüpfung durch.

Siehe linkage für weitere Informationen zur Rückgabestruktur und zum Algorithmus.

Die folgenden sind übliche Aufrufkonventionen

  1. Z = median(y)

    Führt eine Median/WPGMC-Verknüpfung auf der kondensierten Distanzmatrix y durch. Siehe linkage für weitere Informationen zur Rückgabestruktur und zum Algorithmus.

  2. Z = median(X)

    Führt eine Median/WPGMC-Verknüpfung auf der Beobachtungsmatrix X unter Verwendung der Euklidischen Distanz als Distanzmetrik durch. Siehe linkage für weitere Informationen zur Rückgabestruktur und zum Algorithmus.

Parameter:
yndarray

Eine kondensierte Distanzmatrix. Eine kondensierte Distanzmatrix ist ein flaches Array, das das obere Dreieck der Distanzmatrix enthält. Dies ist die Form, die pdist zurückgibt. Alternativ kann eine Sammlung von m Beobachtungsvektoren in n Dimensionen als m mal n Array übergeben werden.

Rückgabe:
Zndarray

Die hierarchische Clusterbildung, kodiert als eine Verknüpfungsmatrix.

Siehe auch

linkage

für die erweiterte Erstellung hierarchischer Clusterings.

scipy.spatial.distance.pdist

Paarweise Distanzmetriken

Hinweise

median hat experimentelle Unterstützung für Backends, die mit der Python Array API Standard kompatibel sind, 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 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, fcluster
>>> from scipy.spatial.distance import pdist

Zuerst benötigen wir einen Spielzeugdatensatz zum Spielen

x x    x x
x        x

x        x
x x    x x
>>> 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]]

Dann erhalten wir eine kondensierte Distanzmatrix aus diesem Datensatz

>>> y = pdist(X)

Schließlich können wir die Clusterbildung durchführen

>>> Z = median(y)
>>> 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.        ]])

Die Linkage-Matrix Z repräsentiert ein Dendrogramm - siehe scipy.cluster.hierarchy.linkage für eine detaillierte Erklärung seines Inhalts.

Wir können scipy.cluster.hierarchy.fcluster verwenden, um zu sehen, zu welchem Cluster jeder anfängliche Punkt gehören würde, gegeben einen Distanzschwellenwert

>>> fcluster(Z, 0.9, criterion='distance')
array([ 7,  8,  9, 10, 11, 12,  1,  2,  3,  4,  5,  6], dtype=int32)
>>> fcluster(Z, 1.1, criterion='distance')
array([5, 5, 6, 7, 7, 8, 1, 1, 2, 3, 3, 4], dtype=int32)
>>> fcluster(Z, 2, criterion='distance')
array([3, 3, 3, 4, 4, 4, 1, 1, 1, 2, 2, 2], dtype=int32)
>>> fcluster(Z, 4, criterion='distance')
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int32)

Auch scipy.cluster.hierarchy.dendrogram kann verwendet werden, um eine Darstellung des Dendrogramms zu generieren.