scipy.cluster.vq.

vq#

scipy.cluster.vq.vq(obs, code_book, check_finite=True)[source]#

将代码簿中的编码分配给观测值。

将代码簿中的代码分配给每个观测值。将M 乘以N obs 数组中的每个观测值向量都分别与代码簿中的质心进行比较,并分配与之最接近的质心的代码。

obs 中的特征应具有单位方差,可以通过使用 whiten 函数或同等函数来实现此目的。代码簿可以使用 k 均值算法或不同的编码算法创建。

参数:
obsndarray

M x N 数组的每一行都表示一个观测值。每一列是每次观测中都会出现的“特征”。必须首先使用 whiten 函数或同等函数将特征进行白化。

code_bookndarray

代码簿通常使用 k 均值算法生成。数组的每一行都包含不同的代码,每一列都是代码的特征。

>>> #              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

观测值与其最近代码之间的失真(举例)。

示例

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