jax.scipy.cluster.vq.vq#

jax.scipy.cluster.vq.vq(obs, code_book, check_finite=True)[源代码]#

将代码本中的码分配给一组观测值。

JAX 实现 scipy.cluster.vq.vq()

根据最近的欧几里得距离,将 obs 中的每个观测向量分配给 code_book 中的一个码。

参数:
  • obs (ArrayLike) – 观测向量数组,形状为 (M, N)。每一行代表一个单独的观测。如果 obs 是一维的,则每个条目被视为一个长度为 1 的观测。

  • code_book (ArrayLike) – 码数组,形状为 (K, N)。每一行代表一个单独的码向量。如果 code_book 是一维的,则每个条目被视为一个长度为 1 的码。

  • check_finite (bool) – JAX 中未使用

返回:

一个元组,包含数组 (code, dist)

  • code 是一个整数数组,形状为 (M,),包含对于给定的 obs 中的条目,在 code_book 中最接近的条目的索引 0 <= i < K

  • dist 是一个浮点数数组,形状为 (M,),包含每个观测值与最近码之间的欧几里得距离。

返回类型:

tuple[Array, Array]

示例

>>> obs = jnp.array([[1.1, 2.1, 3.1],
...                  [5.9, 4.8, 6.2]])
>>> code_book = jnp.array([[1., 2., 3.],
...                        [2., 3., 4.],
...                        [3., 4., 5.],
...                        [4., 5., 6.]])
>>> codes, distances = jax.scipy.cluster.vq.vq(obs, code_book)
>>> print(codes)
[0 3]
>>> print(distances)
[0.17320499 1.9209373 ]