哪个`scipy.cluster.vq`模块的函数用于将代码本中的代码分配给观测值?


在实现k均值算法之前,可以使用`scipy.cluster.vq.vq(obs, code_book, check_finite = True)`函数将代码本中的代码分配给每个观测值。它首先将'M'乘以'N'的obs数组中的每个观测向量与代码本中的质心进行比较。比较完成后,它将代码分配给最接近的质心。它需要obs数组中具有单位方差的特征,我们可以通过将它们传递给`scipy.cluster.vq.whiten(obs, check_finite = True)`函数来实现。

参数

以下是函数`scipy.cluster.vq.vq(obs, code_book, check_finite = True)`的参数:

  • obs− ndarray

这是一个'M'乘以'N'的数组,其中每一行是一个观测值,列是在每次观测中看到的特征。示例如下:

obs = [[ 1., 1., 1.],
   [ 2., 2., 2.],
   [ 3., 3., 3.],
   [ 4., 4., 4.]]
  • code_book− ndarray

它也是一个'M'乘以'N'的数组,通常使用k均值算法生成,其中每一行包含一个不同的代码,列是该代码的特征。

示例如下:

code_book = [
   [ 1., 2., 3., 4.],
   [ 1., 2., 3., 4.],
   [ 1., 2., 3., 4.]]
  • check_finite− bool,可选

此参数用于检查输入矩阵是否只包含有限数字。禁用此参数可能会提高性能,但如果观测值确实包含无限值,也可能导致一些问题,例如崩溃或不终止。此参数的默认值为**True**。

返回值

  • code− ndarray

它返回一个'M'数组,其中包含每个观测值的代码本索引。

  • dist− ndarray

它还返回距离(也称为失真),即每个观测值与其最近代码之间的距离。

示例

import numpy as np
from scipy.cluster.vq import vq
code_book = np.array([[1.,1.,1.],
   [2.,2.,2.]])
observations = np.array([[2.9, 1.3, 1.9],
   [1.7, 3.2, 1.1],
   [1.0, 0.2, 1.7,]])
vq(observations, code_book)

输出

(array([1, 1, 0]), array([1.14455231, 1.52970585, 1.06301458]))

更新于:2021年11月24日

147 次查看

启动您的职业生涯

完成课程后获得认证

开始学习
广告