scipy.cluster.hierarchy.

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üpfungszahlen R[:,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

linkage

für eine Beschreibung, was eine Linkage-Matrix ist.

inconsistent

fü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_im hat 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 Umgebungsvariable SCIPY_ARRAY_API=1 setzen 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-Matrix Z zu erhalten. scipy.cluster.hierarchy.inconsistent kann auch verwendet werden, um die Inkonsistenzmatrix R zu 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_im verwenden, um zu überprüfen, ob R korrekt ist

>>> is_valid_im(R)
True

Wenn R jedoch 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