scipy.cluster.hierarchy.

is_valid_im#

scipy.cluster.hierarchy.is_valid_im(R, предупреждение=False, выбросить=False, имя=None)[источник]#

Вернуть True, если переданная матрица несоответствий действительна.

Это должен быть \(n\) массивом double размером 4. Стандартные отклонения R[:,1] должно быть неотрицательным. Количество связей R[:,2] должно быть положительным и не больше \(n-1\).

Параметры:
Rndarray

Матрица несогласованности для проверки валидности.

предупреждениеbool, необязательно

Когда True, выдаёт предупреждение Python, если переданная матрица связей недействительна.

выброситьbool, необязательно

Когда True, вызывает исключение Python, если переданная матрица связей недействительна.

имяstr, optional

Эта строка относится к имени переменной недопустимой матрицы связей.

Возвращает:
bbool

True, если матрица несоответствий действительна; False в противном случае.

Смотрите также

linkage

для описания того, что такое матрица связей.

inconsistent

для создания матрицы несоответствий.

Примечания

Поддержка Array API (экспериментальная): Если входные данные — ленивый массив (например, Dask или JAX), возвращаемое значение может быть булевым массивом размерности 0. При warning=True или throw=True вызов этой функции материализует массив.

is_valid_im имеет экспериментальную поддержку совместимых с Python Array API Standard бэкендов в дополнение к NumPy. Пожалуйста, рассмотрите тестирование этих функций, установив переменную окружения SCIPY_ARRAY_API=1 и предоставление массивов CuPy, PyTorch, JAX или Dask в качестве аргументов массива. Поддерживаются следующие комбинации бэкенда и устройства (или других возможностей).

Библиотека

CPU

GPU

NumPy

н/д

CuPy

н/д

PyTorch

JAX

⚠️ см. примечания

⚠️ см. примечания

Dask

⚠️ см. примечания

н/д

См. Поддержка стандарта array API для получения дополнительной информации.

Примеры

>>> from scipy.cluster.hierarchy import ward, inconsistent, is_valid_im
>>> from scipy.spatial.distance import pdist

Для заданного набора данных X, мы можем применить метод кластеризации для получения матрицы связей Z. scipy.cluster.hierarchy.inconsistent также может использоваться для получения матрицы несоответствий R связанный с этим процессом кластеризации:

>>> 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]])

Теперь мы можем использовать scipy.cluster.hierarchy.is_valid_im чтобы проверить, что R корректно:

>>> is_valid_im(R)
True

Однако, если R некорректно построена (например, одно из стандартных отклонений установлено в отрицательное значение), то проверка завершится неудачей:

>>> R[-1,1] = R[-1,1] * -1
>>> is_valid_im(R)
False