向量空间维度:计算一组向量所跨越的维度数量
一个函数,用于计算一组向量(以列的形式排列在矩阵中)所跨越的维度数量。
> from mlxtend.math import vectorspace_dimensionality
概述
给定一组向量,作为矩阵中的列排列,vectorspace_dimensionality
计算这些向量所张成的向量空间的维数(即超体积),使用的是格拉姆-施密特过程 [1]。特别地,由于格拉姆-施密特过程产生的向量要么为零,要么归一化为1(即,如果输入是一组线性无关的向量,则得到一个正交归一向量集),因此向量范数的总和对应于向量集的维数。
参考文献
- [1] https://zh.wikipedia.org/wiki/Gram%E2%80%93Schmidt%E8%BF%90%E7%BB%B4%E6%B3%95
示例 1 - 计算向量空间的维度
假设我们有两个基向量 $x=[1 \;\;\; 0]^T$ 和 $y=[0\;\;\; 1]^T$,它们作为矩阵中的列。由于这两个向量的线性独立性,它们所生成的空间自然是一个平面(二维空间):
import numpy as np
from mlxtend.math import vectorspace_dimensionality
a = np.array([[1, 0],
[0, 1]])
vectorspace_dimensionality(a)
2
然而,如果一个向量是另一个向量的线性组合,那么很直观地可以看出,这组向量所描述的空间仅仅是一条直线,也就是1维空间:
b = np.array([[1, 2],
[0, 0]])
vectorspace_dimensionality(a)
2
如果3个向量彼此之间都是线性无关的,那么向量空间的维度就是一个体积(即3D空间):
d = np.array([[1, 9, 1],
[3, 2, 2],
[5, 4, 3]])
vectorspace_dimensionality(d)
3
再次,如果一对向量线性相关(这里是第一行和第二行),这会将维度减少1:
c = np.array([[1, 2, 1],
[3, 6, 2],
[5, 10, 3]])
vectorspace_dimensionality(c)
2
API
vectorspace_dimensionality(ary)
Computes the hyper-volume spanned by a vector set
Parameters
-
ary
: array-like, shape=[num_vectors, num_vectors]An orthogonal set of vectors (arranged as columns in a matrix)
Returns
-
dimensions
: intAn integer indicating the "dimensionality" hyper-volume spanned by the vector set
Examples
For usage examples, please see https://rasbt.github.io/mlxtend/user_guide/math/vectorspace_dimensionality/