scipy.cluster.vq.
vq#
- scipy.cluster.vq.vq(obs, code_book, check_finite=True)[source]#
将码本中的代码分配给观测值。
将码本中的代码分配给每个观测值。 将 “M” x “N” obs 数组中的每个观测向量与码本中的质心进行比较,并分配给最近质心的代码。
obs 中的特征应具有单位方差,这可以通过将它们传递给 whiten 函数来实现。 码本可以使用 k-means 算法或不同的编码算法创建。
- 参数:
- 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
- 返回值:
- codendarray
一个长度为 M 的数组,包含每个观测值的码本索引。
- distndarray
观测值与其最近代码之间的失真(距离)。
注释
除了 NumPy 之外,
vq
还实验性地支持 Python Array API Standard 兼容后端。请考虑通过设置环境变量SCIPY_ARRAY_API=1
并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。支持以下后端和设备(或其他功能)的组合。库
CPU
GPU
NumPy
✅
不适用
CuPy
不适用
⛔
PyTorch
✅
⛔
JAX
⚠️ 无 JIT
⛔
Dask
⚠️ 计算图
不适用
有关更多信息,请参见对数组 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]))