is_monotonic#
- scipy.cluster.hierarchy.is_monotonic(Z)[Quelle]#
Gibt True zurück, wenn die übergebene Verknüpfung monoton ist.
Die Verknüpfung ist monoton, wenn für jeden verbundenen Cluster \(s\) und \(t\) der Abstand zwischen ihnen nicht geringer ist als der Abstand zwischen allen zuvor verbundenen Clustern.
- Parameter:
- Zndarray
Die Verknüpfungsmatrix, die auf Monotonie geprüft werden soll.
- Rückgabe:
- bbool
Ein boolescher Wert, der angibt, ob die Verknüpfung monoton ist.
Siehe auch
linkagefür eine Beschreibung, was eine Linkage-Matrix ist.
Hinweise
is_monotonicunterstützt neben NumPy experimentell auch Backends, die mit dem Python Array API Standard kompatibel sind. 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 übergeben. Die folgenden Kombinationen aus Backend und Gerät (oder anderen Fähigkeiten) werden unterstützt.Bibliothek
CPU
GPU
NumPy
✅
n/a
CuPy
n/a
✅
PyTorch
✅
✅
JAX
✅
✅
Dask
✅
n/a
Siehe Unterstützung für den Array API Standard für weitere Informationen.
Beispiele
>>> from scipy.cluster.hierarchy import median, ward, is_monotonic >>> from scipy.spatial.distance import pdist
Per Definition erzeugen einige hierarchische Clustering-Algorithmen - wie
scipy.cluster.hierarchy.ward- monotone Zuordnungen von Stichproben zu Clustern; dies gilt jedoch nicht immer für andere hierarchische Methoden - z. B.scipy.cluster.hierarchy.median.Gegeben eine Verknüpfungsmatrix
Z(als Ergebnis einer hierarchischen Clustering-Methode) können wir programmgesteuert prüfen, ob sie die Monotonie-Eigenschaft besitzt oder nicht, mit Hilfe vonscipy.cluster.hierarchy.is_monotonic>>> 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 = ward(pdist(X)) >>> Z array([[ 0. , 1. , 1. , 2. ], [ 3. , 4. , 1. , 2. ], [ 6. , 7. , 1. , 2. ], [ 9. , 10. , 1. , 2. ], [ 2. , 12. , 1.29099445, 3. ], [ 5. , 13. , 1.29099445, 3. ], [ 8. , 14. , 1.29099445, 3. ], [11. , 15. , 1.29099445, 3. ], [16. , 17. , 5.77350269, 6. ], [18. , 19. , 5.77350269, 6. ], [20. , 21. , 8.16496581, 12. ]]) >>> is_monotonic(Z) True
>>> 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. ]]) >>> is_monotonic(Z) False
Beachten Sie, dass diese Methode äquivalent dazu ist, einfach zu überprüfen, ob die Abstände in der dritten Spalte der Verknüpfungsmatrix in monoton steigender Reihenfolge erscheinen.