哪个`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]))
广告