is_valid_linkage#
- scipy.cluster.hierarchy.is_valid_linkage(Z, warning=False, throw=False, name=None)[Quelle]#
Prüft die Gültigkeit einer Linkage-Matrix.
Eine Linkage-Matrix ist gültig, wenn sie ein 2D-Array (vom Typ double) mit \(n\) Zeilen und 4 Spalten ist. Die ersten beiden Spalten müssen Indizes zwischen 0 und \(2n-1\) enthalten. Für eine gegebene Zeile
imüssen die folgenden beiden Ausdrücke gelten:\[0 \leq \mathtt{Z[i,0]} \leq i+n-1 0 \leq Z[i,1] \leq i+n-1\]Das heißt, ein Cluster kann keinen anderen Cluster verbinden, es sei denn, der zu verbindende Cluster wurde bereits erzeugt.
Die vierte Spalte von Z repräsentiert die Anzahl der ursprünglichen Beobachtungen in einem Cluster. Daher darf ein gültiger
Z[i, 3]-Wert die Anzahl der ursprünglichen Beobachtungen nicht überschreiten.- Parameter:
- Zarray_like
Linkage-Matrix.
- warningbool, optional
Wenn True, wird eine Python-Warnung ausgegeben, wenn die übergebene Linkage-Matrix ungültig ist.
- throwbool, optional
Wenn True, wird eine Python-Ausnahme ausgelöst, wenn die übergebene Linkage-Matrix ungültig ist.
- namestr, optional
Diese Zeichenkette bezieht sich auf den Variablennamen der ungültigen Linkage-Matrix.
- Rückgabe:
- bbool
True, wenn die Inkonsistenzmatrix gültig ist; False andernfalls.
Siehe auch
linkagefür eine Beschreibung, was eine Linkage-Matrix ist.
Hinweise
Array API-Unterstützung (experimentell): Wenn die Eingabe ein Lazy Array ist (z. B. Dask oder JAX), kann der Rückgabewert ein 0-dimensionales boolesches Array sein. Wenn warning=True oder throw=True ist, materialisiert der Aufruf dieser Funktion das Array.
is_valid_linkagebietet 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 UmgebungsvariableSCIPY_ARRAY_API=1setzen und CuPy-, PyTorch-, JAX- oder Dask-Arrays als Array-Argumente übergeben. Die folgenden Kombinationen von Backend und Gerät (oder anderer Fähigkeit) werden unterstützt.Bibliothek
CPU
GPU
NumPy
✅
n/a
CuPy
n/a
✅
PyTorch
✅
✅
JAX
⚠️ siehe Hinweise
⚠️ siehe Hinweise
Dask
⚠️ siehe Hinweise
n/a
Siehe Unterstützung für den Array API Standard für weitere Informationen.
Beispiele
>>> from scipy.cluster.hierarchy import ward, is_valid_linkage >>> from scipy.spatial.distance import pdist
Alle Linkage-Matrizen, die von den Clustering-Methoden in diesem Modul generiert werden, sind gültig (d. h. sie haben die entsprechenden Dimensionen und die beiden erforderlichen Ausdrücke gelten für alle Zeilen).
Wir können dies mit
scipy.cluster.hierarchy.is_valid_linkageüberprüfen.>>> 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_valid_linkage(Z) True
Wenn wir jedoch eine Linkage-Matrix auf eine falsche Weise erstellen oder eine gültige so modifizieren, dass einer der erforderlichen Ausdrücke nicht mehr gilt, schlägt die Überprüfung fehl.
>>> Z[3][1] = 20 # the cluster number 20 is not defined at this point >>> is_valid_linkage(Z) False