![机器学习数学基础](https://wfqqreader-1252317822.image.myqcloud.com/cover/482/43738482/b_43738482.jpg)
1.3.3 维数
我们已经使用过“一维”“二维”“三维”等术语,这里的“维”指的是空间“维数”,那么什么是空间“维数”?
在讨论基的时候我们发现,虽然某个向量空间的基不是唯一的,但是,每个基的向量个数都是一样的,例如所有二维空间的基的向量个数都是2,三维空间的基的向量个数都是3……我们就将空间的基的向量个数,称为此空间的维数(Dimension)。
上述关于基和维数的概念,对于子空间也成立。
例如向量组生成了
的一个子空间
——过原点的一个平面,
中的任意向量
可以表示为:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_436.jpg?sign=1738838879-P3DujW1XHshcEwAU7rLzyzfBAwmvwq1W-0-420b095680f32cbb09132eeeec313aed)
若,即:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_438.jpg?sign=1738838879-XUr61tvueWH0LGuOOGLfN6Fa3f4Jmu5L-0-0b25ad4a003e387bb544aa3142a440f8)
则:,即向量
线性无关,所以,
是子空间
的一个基,且
的维数是
,即平面。
很显然,在向量空间中,根据基所创建的坐标轴的数量与该空间的维数相同。
在本节中讨论的“基”和“维数”的概念,是对向量空间或者子空间而言的,而在机器学习中,我们所遇到的“维”虽然名称与此相同,但含义迥异,请注意区分。
例如三维向量空间的维数是3,其中某个向量,以列向量的方式可以写成:,如果用NumPy的数组对象,则可以有两种方式表示这个向量。
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_446.jpg?sign=1738838879-AIuNIDTybuQHIlqYhwjemO2yIquYXHLA-0-4abc8ed92ff8fde4ff34fefd338c51bf)
用这种数组形式表示向量u,其数组的维数是1。如果用下面的方式,则数组的维数是2:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_447.jpg?sign=1738838879-x6LM8ARHDvhhoDQUIJmelEQdF0GouinI-0-c8aa54db6d2ff9923f10811a5d5507af)
注意上面创建数组的方法。
所以,数组的维数是对数组对象而言的,并不对应这个数组对象所表示的向量。数组的维数,本质上反映的是该数组共有多少个坐标轴[请参阅《跟老齐学Python:数据分析》(电子工业出版社),有对此内容的详细阐述]。
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_448.jpg?sign=1738838879-2zg5e6NyOI9p2xfcEAAH6Ag1xwbttp8H-0-4de64cec0db51aa0e89983c2fad43f8d)
这里在创建数组的时候,reshape()的参数(3,4)规定了该数组的形状,即0轴3个元素;1轴4个元素。这个数组共有2个轴,那么它的维度就是2。
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_449.jpg?sign=1738838879-Ejc0ClT3sx2fnOyTj9m8tlFKqGHxXg7q-0-383134f9cf97861afd2a071060539a0d)
在进行数据清理和特征工程操作时,常听到一种说法:数据降维。这里的“维”又指什么呢?
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_450.jpg?sign=1738838879-Q7yakKVQDEDMDAbbya5eFepboFyUaqhr-0-d10dc51b5f14986fb5a60eb4092b00eb)
上面的程序所得到的iris就是机器学习中著名的鸢尾花数据集(seaborn是第三方包,需要单独安装,请参阅《跟老齐学Python:数据分析》,电子工业出版社),输出所显示的是从这个数据集中随机抽取的两条(称为样本)。每一列,表示了鸢尾花的一个属性,如sepal_length表示花萼的长度。在机器学习中,也称这些属性为“特征”,或者“维”——根据1.2.3节所述,我们希望这些“维”线性无关,如果是这样,那么也可以说所有“维”是所张成空间的“基”。所谓“降维”,就是减少列的数量(推荐参阅拙作《数据准备和特征工程》)。