is_valid_im#
- scipy.cluster.hierarchy.is_valid_im(R, warning=False, throw=False, name=None)[source]#
Gibt True zurück, wenn die übergebene Inkonsistenzmatrix gültig ist.
Sie muss ein Array von Doubles der Größe \(n\) mal 4 sein. Die Standardabweichungen
R[:,1]müssen nicht-negativ sein. Die VerknüpfungszahlenR[:,2]müssen positiv und nicht größer als \(n-1\) sein.- Parameter:
- Rndarray
Die zu überprüfende Inkonsistenzmatrix auf Gültigkeit.
- warningbool, optional
Wenn True, wird eine Python-Warnung ausgegeben, wenn die übergebene Verknüpfungsmatrix ungültig ist.
- throwbool, optional
Wenn True, wird eine Python-Ausnahme ausgelöst, wenn die übergebene Verknüpfungsmatrix ungültig ist.
- namestr, optional
Diese Zeichenkette bezieht sich auf den Variablennamen der ungültigen Verknüpfungsmatrix.
- Rückgabe:
- bbool
True, wenn die Inkonsistenzmatrix gültig ist; False sonst.
Siehe auch
linkagefür eine Beschreibung, was eine Linkage-Matrix ist.
inconsistentfür die Erstellung einer Inkonsistenzmatrix.
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, materialisiert der Aufruf dieser Funktion das Array.
is_valid_imhat experimentelle Unterstützung für Backends, die dem Python Array API Standard entsprechen, 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 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, inconsistent, is_valid_im >>> from scipy.spatial.distance import pdist
Gegeben ist ein Datensatz
X, auf den wir eine Clustering-Methode anwenden können, um eine Linkage-MatrixZzu erhalten.scipy.cluster.hierarchy.inconsistentkann auch verwendet werden, um die InkonsistenzmatrixRzu erhalten, die mit diesem Clustering-Prozess verbunden ist.>>> 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)) >>> R = inconsistent(Z) >>> 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. ]]) >>> R array([[1. , 0. , 1. , 0. ], [1. , 0. , 1. , 0. ], [1. , 0. , 1. , 0. ], [1. , 0. , 1. , 0. ], [1.14549722, 0.20576415, 2. , 0.70710678], [1.14549722, 0.20576415, 2. , 0.70710678], [1.14549722, 0.20576415, 2. , 0.70710678], [1.14549722, 0.20576415, 2. , 0.70710678], [2.78516386, 2.58797734, 3. , 1.15470054], [2.78516386, 2.58797734, 3. , 1.15470054], [6.57065706, 1.38071187, 3. , 1.15470054]])
Nun können wir
scipy.cluster.hierarchy.is_valid_imverwenden, um zu überprüfen, obRkorrekt ist>>> is_valid_im(R) True
Wenn
Rjedoch falsch konstruiert ist (z. B. eine der Standardabweichungen auf einen negativen Wert gesetzt ist), schlägt die Prüfung fehl>>> R[-1,1] = R[-1,1] * -1 >>> is_valid_im(R) False