scipy.cluster.vq.

vq#

scipy.cluster.vq.vq(obs, code_book, check_finite=True)[источник]#

Назначьте коды из кодовой книги наблюдениям.

Присваивает код из кодовой книги каждому наблюдению. Каждый вектор наблюдения в 'M' на 'N' obs массив сравнивается с центроидами в кодовой книге и присваивается код ближайшего центроида.

Функции в obs должны иметь единичную дисперсию, что можно достичь, пропустив их через функцию whiten. Кодовая книга может быть создана с помощью алгоритма k-средних или другого алгоритма кодирования.

Параметры:
obsndarray

Каждая строка массива 'M' x 'N' представляет собой наблюдение. Столбцы — это "признаки", наблюдаемые в каждом наблюдении. Признаки должны быть предварительно отбелены с использованием функции whiten или чего-то эквивалентного.

code_bookndarray

Кодовую книгу обычно генерируют с помощью алгоритма k-means. Каждая строка массива содержит отдельный код, а столбцы представляют признаки кода:

#              f0  f1  f2  f3
code_book = [[ 1., 2., 3., 4.],  #c0
             [ 1., 2., 3., 4.],  #c1
             [ 1., 2., 3., 4.]]  #c2
check_finitebool, необязательно

Проверять ли, что входные матрицы содержат только конечные числа. Отключение может дать прирост производительности, но может привести к проблемам (сбои, незавершение) если входные данные содержат бесконечности или NaN. По умолчанию: True

Возвращает:
кодndarray

Массив длины M, содержащий индекс кодовой книги для каждого наблюдения.

distndarray

Искажение (расстояние) между наблюдением и его ближайшим кодом.

Примечания

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

Библиотека

CPU

GPU

NumPy

н/д

CuPy

н/д

PyTorch

JAX

⚠️ нет JIT

Dask

⚠️ вычисляет граф

н/д

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

Примеры

>>> import numpy as np
>>> from scipy.cluster.vq import vq
>>> code_book = np.array([[1., 1., 1.],
...                       [2., 2., 2.]])
>>> features  = np.array([[1.9, 2.3, 1.7],
...                       [1.5, 2.5, 2.2],
...                       [0.8, 0.6, 1.7]])
>>> vq(features, code_book)
(array([1, 1, 0], dtype=int32), array([0.43588989, 0.73484692, 0.83066239]))