![机器学习数学基础](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=1738783021-IihCJJoVBN7fB9soFTNRI5RMz80aVsHo-0-376912bd8c926ea3db45888c1f11540c)
若,即:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_438.jpg?sign=1738783021-azu7GvaPI61eRIcRxx7Zz1gRsnly65j0-0-734ecabf23e5f94e0f80025579363bba)
则:,即向量
线性无关,所以,
是子空间
的一个基,且
的维数是
,即平面。
很显然,在向量空间中,根据基所创建的坐标轴的数量与该空间的维数相同。
在本节中讨论的“基”和“维数”的概念,是对向量空间或者子空间而言的,而在机器学习中,我们所遇到的“维”虽然名称与此相同,但含义迥异,请注意区分。
例如三维向量空间的维数是3,其中某个向量,以列向量的方式可以写成:,如果用NumPy的数组对象,则可以有两种方式表示这个向量。
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_446.jpg?sign=1738783021-IN3tnhX7YoNnqLDaOhLtei7Y486SRGif-0-c4349e860d6bc714e3e277c824251bdd)
用这种数组形式表示向量u,其数组的维数是1。如果用下面的方式,则数组的维数是2:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_447.jpg?sign=1738783021-jTbG01XWMVHKseezObD6PBDXKHd5v0hx-0-2998c6eaee6a04487e68e2ee12da5bc9)
注意上面创建数组的方法。
所以,数组的维数是对数组对象而言的,并不对应这个数组对象所表示的向量。数组的维数,本质上反映的是该数组共有多少个坐标轴[请参阅《跟老齐学Python:数据分析》(电子工业出版社),有对此内容的详细阐述]。
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_448.jpg?sign=1738783021-SppM6nydHGDMqvywHHLygLlZhWzlUhYs-0-96cea6d30215ef01b9e10ff34c443a64)
这里在创建数组的时候,reshape()的参数(3,4)规定了该数组的形状,即0轴3个元素;1轴4个元素。这个数组共有2个轴,那么它的维度就是2。
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_449.jpg?sign=1738783021-TsWGm6Z1BXawWyhJlA4EkHdktxSn61xI-0-9619735e0cea8c430d2e5442007b4785)
在进行数据清理和特征工程操作时,常听到一种说法:数据降维。这里的“维”又指什么呢?
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_450.jpg?sign=1738783021-SAmPsL17GshbJ09G0XC7tMXaCKxRAKfk-0-23745b81c5cc3c8f4f0d6bd5bd761b3b)
上面的程序所得到的iris就是机器学习中著名的鸢尾花数据集(seaborn是第三方包,需要单独安装,请参阅《跟老齐学Python:数据分析》,电子工业出版社),输出所显示的是从这个数据集中随机抽取的两条(称为样本)。每一列,表示了鸢尾花的一个属性,如sepal_length表示花萼的长度。在机器学习中,也称这些属性为“特征”,或者“维”——根据1.2.3节所述,我们希望这些“维”线性无关,如果是这样,那么也可以说所有“维”是所张成空间的“基”。所谓“降维”,就是减少列的数量(推荐参阅拙作《数据准备和特征工程》)。