centroid#
- scipy.cluster.hierarchy.centroid(y)[Quelle]#
Führt die Zentroid-/UPGMC-Verknüpfung durch.
Weitere Informationen zur Eingabematrix, zur Rückgabestruktur und zum Algorithmus finden Sie unter
linkage.Die folgenden sind übliche Aufrufkonventionen
Z = centroid(y)Führt die Zentroid-/UPGMC-Verknüpfung auf der kondensierten Distanzmatrix
ydurch.Z = centroid(X)Führt die Zentroid-/UPGMC-Verknüpfung auf der Beobachtungsmatrix
Xunter Verwendung der Euklidischen Distanz als Distanzmetrik durch.
- 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
pdistzurückgibt. Alternativ kann eine Sammlung von m Beobachtungsvektoren in n Dimensionen als m mal n Array übergeben werden.
- Rückgabe:
- Zndarray
Eine Verknüpfungsmatrix, die die hierarchische Clusterbildung enthält. Weitere Informationen zu ihrer Struktur finden Sie in der Dokumentation der Funktion
linkage.
Siehe auch
linkagefür die erweiterte Erstellung hierarchischer Clusterings.
scipy.spatial.distance.pdistPaarweise Distanzmetriken
Hinweise
centroidunterstützt neben NumPy experimentell auch Python Array API Standard-kompatible Backends. 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 bereitstellen. Die folgenden Kombinationen aus Backend und Gerät (oder anderer Funktionalität) 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 centroid, 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 = centroid(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.33333333, 6. ], [16. , 17. , 3.33333333, 6. ], [20. , 21. , 3.33333333, 12. ]]) # may vary
Die Linkage-Matrix
Zrepräsentiert ein Dendrogramm - siehescipy.cluster.hierarchy.linkagefür eine detaillierte Erklärung seines Inhalts.Wir können
scipy.cluster.hierarchy.fclusterverwenden, 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) # may vary >>> fcluster(Z, 1.1, criterion='distance') array([5, 5, 6, 7, 7, 8, 1, 1, 2, 3, 3, 4], dtype=int32) # may vary >>> fcluster(Z, 2, criterion='distance') array([3, 3, 3, 4, 4, 4, 1, 1, 1, 2, 2, 2], dtype=int32) # may vary >>> fcluster(Z, 4, criterion='distance') array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int32)
Auch
scipy.cluster.hierarchy.dendrogramkann verwendet werden, um eine Darstellung des Dendrogramms zu generieren.