阅读 142

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

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

参数

下面给出了函数scipy.cluster.vq.vq(obs, code_book, check_finite = True) 的参数-

  • obs− ndarray

它是一个由 'N' 组成的 'M' 数组,其中每一行是一个观察值,列是在每次观察过程中看到的特征。示例如下 -


obs = [[ 1., 1., 1.],   [ 2., 2., 2.],   [ 3., 3., 3.],   [ 4., 4., 4.]]


  • code_book - ndarray

它也是一个 'M' by 'N' 数组,通常使用 k-means 算法生成,其中每一行保存不同的代码,列是该代码的特征。

示例如下 -


code_book = [   [ 1., 2., 3., 4.],   [ 1., 2., 3., 4.],   [ 1., 2., 3., 4.]]


  • check_finite - 布尔值,可选

此参数用于检查输入矩阵是否仅包含有限数字。禁用此参数可能会给您带来性能提升,但如果观察确实包含无穷大,它也可能导致一些问题,例如崩溃或非终止。此参数的默认值为True

退货

  • 代码- 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]))


文章分类
百科问答
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐