
1.3.3 维数
我们已经使用过“一维”“二维”“三维”等术语,这里的“维”指的是空间“维数”,那么什么是空间“维数”?
在讨论基的时候我们发现,虽然某个向量空间的基不是唯一的,但是,每个基的向量个数都是一样的,例如所有二维空间的基的向量个数都是2,三维空间的基的向量个数都是3……我们就将空间的基的向量个数,称为此空间的维数(Dimension)。
上述关于基和维数的概念,对于子空间也成立。
例如向量组生成了
的一个子空间
——过原点的一个平面,
中的任意向量
可以表示为:

若,即:

则:,即向量
线性无关,所以,
是子空间
的一个基,且
的维数是
,即平面。
很显然,在向量空间中,根据基所创建的坐标轴的数量与该空间的维数相同。
在本节中讨论的“基”和“维数”的概念,是对向量空间或者子空间而言的,而在机器学习中,我们所遇到的“维”虽然名称与此相同,但含义迥异,请注意区分。
例如三维向量空间的维数是3,其中某个向量,以列向量的方式可以写成:,如果用NumPy的数组对象,则可以有两种方式表示这个向量。

用这种数组形式表示向量u,其数组的维数是1。如果用下面的方式,则数组的维数是2:

注意上面创建数组的方法。
所以,数组的维数是对数组对象而言的,并不对应这个数组对象所表示的向量。数组的维数,本质上反映的是该数组共有多少个坐标轴[请参阅《跟老齐学Python:数据分析》(电子工业出版社),有对此内容的详细阐述]。

这里在创建数组的时候,reshape()的参数(3,4)规定了该数组的形状,即0轴3个元素;1轴4个元素。这个数组共有2个轴,那么它的维度就是2。

在进行数据清理和特征工程操作时,常听到一种说法:数据降维。这里的“维”又指什么呢?

上面的程序所得到的iris就是机器学习中著名的鸢尾花数据集(seaborn是第三方包,需要单独安装,请参阅《跟老齐学Python:数据分析》,电子工业出版社),输出所显示的是从这个数据集中随机抽取的两条(称为样本)。每一列,表示了鸢尾花的一个属性,如sepal_length表示花萼的长度。在机器学习中,也称这些属性为“特征”,或者“维”——根据1.2.3节所述,我们希望这些“维”线性无关,如果是这样,那么也可以说所有“维”是所张成空间的“基”。所谓“降维”,就是减少列的数量(推荐参阅拙作《数据准备和特征工程》)。