vectorspace_dimensionality: 计算一组向量张成的维度

一个函数,用于计算一组向量(排列成矩阵的列)所张成的维度数量。

from mlxtend.math import vectorspace_dimensionality

概述

给定一组向量,排列成矩阵的列,vectorspace_dimensionality 使用 Gram-Schmidt 过程 [1] 计算该向量空间所张成的维度(即超体积)数量。具体来说,由于 Gram-Schmidt 过程产生的向量要么是零向量,要么是范数归一化的向量(即如果输入是一组线性独立向量,则生成一组标准正交向量),因此向量范数之和对应于向量集的维度数量。

参考

  • [1] https://en.wikipedia.org/wiki/Gram–Schmidt_process

示例 1 - 计算向量空间的维度

假设我们有两个基向量作为矩阵的列。由于这两个向量线性独立,它们张成的空间自然是一个平面(二维空间)。

import numpy as np
from mlxtend.math import vectorspace_dimensionality


a = np.array([[1, 0],
              [0, 1]])

vectorspace_dimensionality(a)
2

然而,如果一个向量是另一个向量的线性组合,很直观地可以看到向量集描述的空间仅仅是一条线,也就是一维空间。

b = np.array([[1, 2],
              [0, 0]])

vectorspace_dimensionality(a)
2

如果 3 个向量相互之间都线性独立,则向量空间的维数是一个体积(即三维空间)。

d = np.array([[1, 9,  1],
              [3, 2,  2],
              [5, 4,  3]])

vectorspace_dimensionality(d)
3

同样,如果一对向量线性相关(这里:第 1 行和第 2 行),这将减少一个维度。

c = np.array([[1, 2,  1],
              [3, 6,  2],
              [5, 10, 3]])

vectorspace_dimensionality(c)
2

API

vectorspace_dimensionality(ary)

计算向量集张成的超体积

参数

  • ary : 类似数组,形状=[num_vectors, num_vectors]

    一组正交向量(排列成矩阵的列)

返回值

  • dimensions : int

    一个整数,表示向量集张成的“维度”超体积

示例

有关用法示例,请参阅 https://mlxtend.cn/mlxtend/user_guide/math/vectorspace_dimensionality/