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