weighted#
- scipy.cluster.hierarchy.weighted(y)[Quelle]#
Führt die gewichtete/WPGMA-Verknüpfung auf der kondensierten Distanzmatrix durch.
Siehe
linkagefür weitere Informationen zur Rückgabestruktur und zum Algorithmus.- Parameter:
- yndarray
Die obere Dreiecksmatrix der Distanzmatrix. Das Ergebnis von
pdistwird in diesem Format zurückgegeben.
- Rückgabe:
- Zndarray
Eine Verknüpfungsmatrix, die die hierarchische Clusterbildung enthält. Weitere Informationen zur Struktur finden Sie unter
linkage.
Siehe auch
linkagefür die erweiterte Erstellung hierarchischer Clusterings.
scipy.spatial.distance.pdistPaarweise Distanzmetriken
Hinweise
weightedunterstützt experimentell Python Array API Standard-kompatible Backends zusätzlich zu NumPy. 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 von Backend und Gerät (oder anderen Fähigkeiten) 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 weighted, 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 = weighted(y) >>> Z array([[ 0. , 1. , 1. , 2. ], [ 6. , 7. , 1. , 2. ], [ 3. , 4. , 1. , 2. ], [ 9. , 11. , 1. , 2. ], [ 2. , 12. , 1.20710678, 3. ], [ 8. , 13. , 1.20710678, 3. ], [ 5. , 14. , 1.20710678, 3. ], [10. , 15. , 1.20710678, 3. ], [18. , 19. , 3.05595762, 6. ], [16. , 17. , 3.32379407, 6. ], [20. , 21. , 4.06357713, 12. ]])
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, 1, 2, 3, 10, 11, 12, 4, 6, 5], dtype=int32) >>> fcluster(Z, 1.5, criterion='distance') array([3, 3, 3, 1, 1, 1, 4, 4, 4, 2, 2, 2], dtype=int32) >>> fcluster(Z, 4, criterion='distance') array([2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1], dtype=int32) >>> fcluster(Z, 6, 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.