
简介机器学习期末复习题及答案以单份docx文档呈现面向高校机器学习课程期末备考学生及需要系统梳理基础概念的自学者帮助在考前快速自测、定位薄弱环节。压缩包内共1个docx文件约20KB篇幅紧凑按单项选择题、多项选择题、名词解释、简答题与编程题五类题型组织题目均附参考答案便于按题型检索和对照记忆。内容覆盖训练集与测试集划分、欠拟合与过拟合、K近邻、朴素贝叶斯判定公式、支持向量机核函数与线性不可分、决策树ID3/C4.5/CART、线性回归与聚类分析、神经网络基本组成等高频考点编程题还梳理了简单线性回归和K近邻分类的建模、拟合、预测与评价步骤。已有13141人学习适合用于期末查漏补缺、课堂复习对照与编程题思路复盘也可作为知识点串联的辅助材料。1. 知识地图机器学习期末复习需要构建的五个部分拿到一份机器学习期末复习题很多人的第一反应是从第一题开始刷刷完对答案把错的地方抄一遍。这个方法在考前一周还有效但离「心里有底」还差得远因为题目只覆盖单个知识点考场上考的是能不能把这些点连成一条线。这份资料真正的用法是先把自己手里的题目拆成五个部分学习范式与数据准备、分类算法、回归模型、评估指标、sklearn 编程落地每个部分单独过一遍再回到题目里验证。如果零散地背答案遇到换个问法的题就容易出错。下面按这五个部分走一遍每个部分都说明考点在哪、容易错在哪、怎么用一份答案反推出整章的知识结构最后落到一份能直接照着做的复习清单上。2. 学习范式与数据准备从监督到数据清洗的第一层筛子整份资料里被反复考查、又最容易被当成「送分题」跳过的是最前面的学习范式划分。选择题第三题问 K 近邻算法属于什么第七题问 PCA 降维属于什么两题只差几个字答案却一个是监督、一个是无监督。这类题在期末卷面上占分不多但它决定后面所有算法的归类一旦混淆简答题里解释「为什么聚类不需要标签」就会跟着错。2.1 三句话分清监督、无监督与半监督判断一种方法属于哪一类不用背定义只看两件事训练数据有没有标签输出的是离散类别还是连续数值。有标签、输出离散类别的是分类有标签、输出连续数值的是回归没有标签、按相似度把样本聚成组的是聚类没有标签、只对特征做压缩或变换的是降维。半监督介于中间用少量标签样本带大量无标签样本期末一般不深挖知道定义即可。方法归属判断依据K 近邻 KNN有监督训练集带标签预测结果是离散类别朴素贝叶斯有监督用带标签样本估计先验概率与条件概率决策树有监督用标签计算信息增益或基尼指数来分裂支持向量机有监督用标签寻找最大间隔的分隔超平面简单/多元线性回归有监督拟合特征到连续目标变量的关系PCA 降维无监督不看标签只按方差方向重排特征聚类分析K-Means、层次聚类无监督按距离准则分组没有标准答案表格里最容易被忽略的是 PCA 那一行。很多人看到「降维」两个字下意识觉得是在处理特征就把它归到数据预处理里当工具忘了问它到底属于哪类学习。PCA 对特征矩阵做的是协方差矩阵的特征值分解全程不接触标签所以是标准的无监督方法这一点在选择题里被单独拿出来考过。注意判断口诀是「有没有标签」优先于「算法名字听起来像什么」。名字里带「回归」的逻辑回归其实是分类算法名字里带「树」的随机森林属于集成学习这些命名里的历史遗留问题在复习阶段最容易造成误判。2.2 训练集与测试集为什么必须切分选择题第一题就直接考了数据集划分机器学习把数据集分成训练集和测试集。选项里给出的分析集、导入集、备用集都是干扰项它们听起来像数据处理流程里的环节但在标准术语里并不存在。简答题里又问了一遍「为什么要把数据集分成训练集与测试集」说明这个点在两套题型里都会出现。核心逻辑只有一句用训练集拟合出来的模型对训练集本身一定是「贴合」的但这种贴合不能证明它在新数据上也贴合。模型完全有可能只是把训练样本的噪声也一起记住了换一批数据精度就大幅下降这就是过拟合的典型表现。测试集的作用相当于一次模拟考它不参与参数更新只在最后用来给出一个相对诚实的精度估计。这里有一个容易被忽略的细节划分必须在任何预处理之前完成。如果先对全量数据做了标准化或者缺失值填补再切分训练集和测试集那么测试集的均值、方差这些统计量已经通过预处理「泄漏」进了训练过程。这在期末卷面上不会直接考但编程题里如果顺手写了先标准化再切分思路分是要扣的。常见的划分比例是 7:3 或 8:2样本量小的时候用交叉验证替代单次划分思路是一样的。2.3 数据清洗缺失值、离群点与噪声三件事多项选择题里「数据清洗包括」这一题的答案是缺失值处理和离群值检查干扰项是训练数据和分类。这个错误选项设得比较合理训练数据是划分出来的数据集分类是任务类型二者都不是「清洗」这个动作。名词解释里对数据清洗的定义说得更全通过填补缺失值、光滑噪声数据、平滑或删除离群点、解决数据的不一致性来「清理」数据。把这四件事拆开看就构成了数据准备的完整流程。缺失值处理常见做法是删除、均值或中位数填补、按类别分组填补噪声数据用分箱、回归拟合或者聚类的方式做平滑离群点先检测再决定是删除还是保留判定标准可以是箱线图的四分位距也可以是三倍标准差数据不一致性多见于同一字段出现多种表示形式比如单位混用、日期格式不统一需要在入模前统一。提示离群点和噪声不是同一件事。噪声是随机误差通常做平滑离群点是远离主体的观测值可能是录入错误也可能是真实存在的极端情况删之前要想清楚它是不是业务上真正关心的样本。3. 分类算法主线KNN、朴素贝叶斯、SVM 与决策树分类部分是整份资料的重心选择题占了四道简答题占了两道编程题占了一道。四个算法被拆在四种题型里考说明出题人希望你能分清它们各自解决什么问题、用什么方式划分边界。这四种算法的思路差异很大KNN 靠距离投票朴素贝叶斯靠概率比较SVM 靠间隔最大化决策树靠特征上的条件判断。复习时如果只记结论不记思路换一种描述方式就会失分。3.1 KNN距离、K 值与惰性学习原题给的 KNN 编程题数据集是十个二维样本点前五个标签为 0后五个标签为 1。这组数据有个明显特点类别 0 的点集中在左下区域类别 1 的点集中在右上区域中间没有交叠所以任何 K 值只要取奇数训练集上都能拿到 100% 的准确率。这是出题人给的「友好数据」但它掩盖了 KNN 真正的考点K 值怎么选、距离怎么算、为什么它被归为有监督学习。from sklearn.neighbors import KNeighborsClassifier # 特征矩阵10 个二维样本点写成嵌套列表每个子列表是一个样本 X [[3, 2], [3, 1], [1, 3], [3, 4], [2, 2], [7, 4], [5, 3], [9, 2], [7, 3], [7, 0]] # 标签向量前 5 个为类别 0后 5 个为类别 1长度必须与 X 的行数一致 y [0, 0, 0, 0, 0, 1, 1, 1, 1, 1] # 建模n_neighbors 就是 K 值题目没给就自己指定一般取奇数避免平票 knn KNeighborsClassifier(n_neighbors3) # 拟合KNN 是惰性学习fit 阶段只是把训练样本原样存下来并不训练参数 knn.fit(X, y) # 预测对一个新样本点分类内部做的是计算它与全部训练样本的距离 print(knn.predict([[4, 3]])) # 评估返回在给定数据上的分类准确率 print(knn.score(X, y))代码里n_neighbors是最关键的超参数K 取 1 时模型只参考最近的一个邻居对噪声极其敏感K 取太大决策边界会过度平滑把本不属于同一类的点也拉进来。样本量为 10 的时候K 取 3 或 5 是常见选择因为偶数会导致票数打平。fit这一步值得单独说明KNN 没有显式的训练过程所谓「模型」就是训练集本身这也是它被叫作惰性学习的原因预测开销随样本量线性增长。还有一个容易被忽略的点KNN 对特征尺度敏感。距离计算默认使用欧氏距离如果两个特征的量纲差了几个数量级数值大的特征会主导距离结果所以在真实场景里入模前要先标准化。原题的数据两个维度量级接近看不出这个问题但简答题如果问到 KNN 的缺点尺度敏感几乎必答。3.2 朴素贝叶斯判定公式在算什么朴素贝叶斯的判定公式在资料里出现了两次两次的写法还不完全一样。完整版本是 H(x) argmax P(Ci) Π P(ak|Ci)简化版本是 H(x) argmax P(Ci)。后者其实省略了似然项只在先验占主导时有意义考试时如果四个选项长得像要选带连乘符号的那个完整式子。公式拆开看是三块内容。P(Ci) 是类别的先验概率用训练集里各类别出现的频率估计P(ak|Ci) 是在类别 Ci 下第 k 个特征取值为 ak 的条件概率离散特征按频率统计连续特征通常假设服从正态分布再代入概率密度最外面的 argmax 表示把所有类别都算一遍取概率最大的那个作为预测结果。「朴素」两个字指的是一个强假设在给定类别的条件下各个特征之间相互独立。这个假设在现实中基本不成立比如一篇文档里「机器」和「学习」两个词同时出现的概率远高于它们各自独立出现时的乘积但即便如此朴素贝叶斯在文本分类任务上依然表现不错。原题的名词解释和简答题都问了原理答题时要把「基于贝叶斯定理」「求属于各类别的概率」「取概率最大者」这三点写全再补一句独立性假设才算完整。注意朴素贝叶斯的判定公式里没有出现分母 P(x)。因为对同一个待分类样本所有类别的分母都一样argmax 时可以直接约掉这也是它能写成连乘形式的原因。答题时如果能点出这一点说明是真的理解了公式而不是记住了符号。3.3 SVM核函数清单与线性可分的空间直觉SVM 在资料里被考了三次选择题问常用的核函数简答题分别问线性可分和线性不可分。三个问题其实是一条线从「能不能用一条直线分开」出发分不开就想办法升维升维之后靠核函数避免显式计算高维坐标。线性可分的定义在简答题里写得很清楚一维空间里分开两个点集只需要找一个点二维空间里需要一条分类直线三维空间里需要一个分类平面n 维空间里则要找一个超平面。维数逐级往上加分隔对象的名称也跟着变从点到线到面再到超平面这条递进关系是这道题的采分点答题时按空间维度逐层写比只写一句「存在一个超平面能分开」要稳。线性不可分就是找不到这样一个分隔对象。实际数据里两类样本混在一起任何直线或平面切下去都会切错。SVM 的处理方式是把原始特征映射到更高维的空间在那个空间里原本纠缠的样本可能就变成线性可分了。映射之后维度可能非常高直接计算内积不可行于是引入核函数用低维空间里的函数值等价替代高维内积这就是所谓的核技巧。常用的核函数里高斯核RBF 核是最常考的一个它把样本映射到无限维空间参数只有一个 gammagamma 越大单个样本的影响范围越小决策边界越曲折越容易过拟合。多项式核、线性核也在常见清单里。资料里给出的干扰项是「二项式核函数」「贝叶斯核函数」「网络核函数」三个名字都是拼出来的看到带「贝叶斯」「网络」字样的核函数基本可以直接排除。提示核函数到底「常用几种」在不同教材里口径不一致有的算上 Sigmoid 核写成四种有的只算线性核、多项式核、高斯核这三种。考前查一遍自己的教材或课件按老师的口径答题不要拿别的版本硬套。3.4 决策树三种生成算法与两套划分标准决策树的原理在简答题里被问过一次标准答法是它是一棵类似流程图的树结构分支节点对某个特征做测试按测试结果把样本分到不同子节点叶子节点代表一个类别。这个描述抓住了结构但没有说清「怎么选特征」而后者才是决策树的核心。选特征的依据就是划分标准。多项选择题里给出两个正确选项信息增益和基尼指数。信息增益来自信息论里的熵计算公式是划分前的熵减去划分后的条件熵增益越大说明这次划分让不确定性下降得越多ID3 算法用的就是这个标准。信息增益有个偏向取值种类多的特征天然容易拿到高增益比如用身份证号去划分每个样本自成一类增益最大但毫无泛化能力。C4.5 用信息增益率修正了这个偏向在增益的基础上除以特征自身的固有值。CART 用的是基尼指数它衡量的是从数据集中随机抽两个样本、类别不一致的概率基尼指数越小纯度越高。三种生成算法对应两套标准这个对应关系是选择题和简答题的交叉考点。ID3 用信息增益C4.5 用信息增益率CART 用基尼指数CART 同时还能做回归树这一点在比较三种算法时经常被拿来当区分点。资料里有一道题问「决策树生成有几种算法」答案是 3指的就是这三种答题时把名字和对应标准一起写比只写数字得分高。4. 回归模型与评估指标从线性回归到正则化家族回归部分在资料里分散在多选题、名词解释、简答题和编程题里。它的结构比分类部分清晰一条主线是从简单到复杂的模型家族另一条主线是评估指标。两条线要分开记混在一起就会出现在问「哪个是回归模型」的题里选了评估指标或者在问「哪个是评估指标」的题里选了模型名字。4.1 简单线性回归一个特征、一条直线名词解释里给的定义是线性回归针对一个或多个特征与连续目标变量之间的关系建模分为简单线性回归和多元线性回归。简答题进一步把简单线性回归的定义式写了出来y ω0 ω1x其中 ω0 是截距ω1 是斜率x 是单个解释变量y 是连续响应值。多元线性回归就是把一个 x 扩展成一组特征形式变成 y ω0 ω1x1 ω2x2 … ωnxn。编程题要求写出用简单线性回归做数据回归的步骤只写步骤不写代码导入库函数、导入数据集、建模、模型拟合、预测、模型评价。这六步是所有 sklearn 建模任务的通用骨架换成分类、聚类、降维步骤名基本不变只是换掉实例化的类。所以这题表面考线性回归实际考的是对 sklearn 工作流的整体把握。from sklearn.linear_model import LinearRegression # sklearn 要求特征矩阵是二维的即使只有一个特征也要写成 [[1], [2], ...] X [[1], [2], [3], [4], [5]] # 目标值是连续数值长度与 X 的行数一致 y [3, 4, 6, 8, 9] # 建模实例化一个线性回归对象 model LinearRegression() # 拟合这一步才真正求解 ω0 和 ω1 model.fit(X, y) # coef_ 是斜率 ω1intercept_ 是截距 ω0 print(model.coef_, model.intercept_) # 预测对新的特征值给出预测结果同样要传二维 print(model.predict([[6]])) # 评价回归任务默认返回 R²不是准确率 print(model.score(X, y))代码里最值得说的是X的形状。资料原文写的是X[1,2,3,4,5]如果照抄进 sklearn会直接报错因为它要求的输入是二维数组形状为样本数特征数。只有一个特征时也必须写成嵌套列表或者用reshape(-1, 1)转换。这是从纸面题目到实际运行时最容易出错的地方几乎每个初学者都会遇到一次。model.score在回归任务里返回的是决定系数 R²不是分类里的准确率。R² 的取值范围通常在 0 到 1 之间越接近 1 说明模型解释的方差比例越高但它是可以出现负值的当模型预测效果比直接用均值预测还差时就会是负数。这一点在评估指标那一节还会展开。4.2 正则化回归岭回归、Lasso 与弹性网络多项选择题里有一道问「正规化回归模型有」正确选项是岭回归、最小绝对收缩与选择算子、弹性网络。这三个名字分别对应 L2 正则、L1 正则和两者的组合作用都是在损失函数里加一个惩罚项限制系数的大小从而降低过拟合风险。岭回归加的是系数平方和它的特点是会把系数压缩到接近 0 但不会正好等于 0所以所有特征都会被保留适合特征之间高度相关的场景。Lasso 加的是系数绝对值之和它能把一部分系数直接压成 0相当于顺带做了特征选择适合特征维度高、其中大量特征无关的场景。弹性网络把两者按比例混合用两个超参数分别控制 L1 和 L2 的权重在特征分组相关的情况下表现更稳。这三个模型和简单线性回归的关系要理清简单线性回归是基础形式岭回归和 Lasso 是在它基础上加了约束的变体弹性网络又是前两者的融合。它们都属于回归模型都可以用同一套评估指标衡量。复习时把这四者排成一条线比孤立地记三个名词要牢。4.3 回归指标对照MAE、MSE、RMSE 与 R²评估指标这块是资料里前后表述不太一致的地方也是复习时最容易混淆的地方。选择题里出现了两种问法一次问「回归模型性能评估平均绝对误差」答案是 MAE一次问「回归模型性能评估均方差」答案是 RMSE。两个问法指向不同指标但选项是同一组如果只看选项不看题干里的指标中文名很容易选错。指标全称计算方式特点MAE平均绝对误差预测值与真实值差值的绝对值求平均单位与目标变量一致对离群点不敏感MSE均方误差差值平方后求平均放大大误差的影响单位是目标变量的平方RMSE均方根误差MSE 开平方单位与目标变量一致同时保留对大误差的惩罚R²决定系数1 减去残差平方和与总平方和之比无量纲衡量模型解释了多少方差选择哪个指标取决于你更在意什么。如果数据里离群点多且不希望个别极端值主导评估结果用 MAE如果大误差的代价明显高于小误差用 MSE 或 RMSE如果要横向比较不同量纲的任务用 R²。名词解释里对均方误差的定义是「反映估计量与被估计量之间差异程度的一种度量」这个说法比较笼统答题时可以补一句「差值平方的期望」把计算方式带上会更完整。分类任务的指标是另一套名词解释里给出的性能评估包含准确率、查准率、查全率和综合评价指标。准确率的定义在另一处名词解释里写得更明确分类正确的样本数除以总样本数。查准率关注「预测为正的样本里有多少真的是正」查全率关注「真正的正样本里有多少被找出来」两者此消彼长综合评价指标 F1 是它们的调和平均。这四者的关系和回归指标那四个是平行的结构对照着记效率更高。5. 易错点盘点选择题最容易踩的五个坑把资料里的题目都做一遍会发现错误分布很集中不是知识点太难而是几个固定的地方反复出错。下面这五条是从两套题目里交叉比对出来的高频失分点每条都按「错在哪、为什么会错、怎么补」写对照着自己的错题看一遍能省下不少重复刷题的时间。5.1 欠拟合与过拟合的处理措施张冠李戴易漏点选择题问「以下属于解决模型欠拟合的方法」正确选项是增加训练过程的迭代次数而增加训练数据量、对模型进行裁剪、正则化这三项常被误选。为什么漏这四个选项在教材里都出现过只是分属不同问题的解决方案。增加数据量、模型裁剪、正则化都是用来抑制过拟合的手段它们的方向是「让模型别太复杂」而欠拟合的问题是模型太简单、没学到东西解决办法应该是增加模型复杂度、增加迭代次数、增加有效特征。方向相反一旦记混就会全线崩。怎么补记一条对照关系过拟合对应「减复杂度」欠拟合对应「加复杂度」。把名词解释里过拟合的定义「模型拟合过度、特征值选取过多」和欠拟合的「训练和预测精度均不高、未把握核心特征」放在一起读一个精度太高、一个精度太低处理方向自然就分开了。5.2 评估指标的口径混淆易漏点同一组选项被用来回答两个不同的题干问 MAE 时选 MAE问均方差时选 RMSE两个题干只差几个字。为什么漏平时记指标是按「MAE、MSE、RMSE、R²」这个顺序背的没有把中文全称和英文缩写绑定。考场上看到选项里的英文缩写凭位置印象选很容易选到相邻的那一个。还有一个隐藏问题均方差和均方误差在中文里经常被混用有的教材把 MSE 叫均方误差把 RMSE 叫均方根误差题目里写「均方差」实际指向的是开过方的那个。怎么补做一张中英文对照表把每个指标的中文全称、英文全称、缩写、是否开方四列写全考前只看这张表。遇到题干先翻译成中文全称再去找对应的缩写不靠位置记忆。5.3 算法计数类题目靠猜易漏点决策树生成算法几种、聚类分析几种方法、SVM 常用核函数几种三道题连着出答案都是数字非常容易连蒙带猜。为什么漏这三类题在教材里的表述往往是一句带过复习时觉得不重要就跳过了考场上只能凭「好像在哪见过 3」的印象选。实际上这三个 3 各有各的所指决策树是 ID3、C4.5、CART聚类常见的是划分式、层次式、密度式三类代表算法分别是 K-Means、层次聚类、DBSCAN核函数按最常见的口径是线性核、多项式核、高斯核。怎么补不要记数字记名字。在草稿纸上把三个 3 各自对应的一组名字默写出来能写全就说明记住了写不全说明这个点没掌握。数字只是名字数量的自然结果先记名字再数数顺序反了就会变成死记。5.4 sklearn 导入语句与参数写错易漏点选择题问「用 sklearn 线性回归算法需要导入函数库」正确选项是from sklearn.linear_model import LinearRegression干扰项里混着import numpy as np、import matplotlib.pyplot as plt、from math import sqrt。为什么漏这四个导入语句在完整的建模脚本里都会出现平时写代码时是一起复制的没有单独注意哪一行对应哪个功能。加上linear_model里的下划线和大小写手写时容易写成linearmodel或者Linear_model。怎么补把常用的几个导入语句整理成一张小卡片按「数据处理、绘图、建模、评估」四类分开NumPy 管数组运算Matplotlib 管绘图sklearn 的 linear_model 和 neighbors 管子类metrics 管评估。分类清楚之后问「线性回归要导入什么」就不会串到 NumPy 上。同时注意 sklearn 的模块名统一用小写加下划线类名用大驼峰这是固定的命名规范。5.5 编程题只建模不评估、数据形状写错易漏点编程题的评分点通常分四到五档导入库、构造数据、建模、拟合、预测、评估各占一部分。只写fit不写score或者把特征X写成一维列表都会直接扣掉相应分数。为什么漏复习时看编程题的答案目光集中在模型那一行潜意识里觉得「建模」就是全部忽略了前后的准备和收尾。数据形状的问题则是因为纸面题目给的X[1,2,3,4,5]看起来完全合理没人会想到 sklearn 会拒绝这个输入。怎么补把六步骨架背下来导入、数据、建模、拟合、预测、评估写代码时按顺序一行一行落实缺哪步补哪步。数据形状单独记一条规则sklearn 的一切fit和predict都要求二维输入单特征也要包一层。写完代码后在脑子里过一遍每一行的输入输出形状能过就基本不会出错。6. 复习清单三轮筛法把这份答案用透剩下最后一周的时候最忌讳的是把整份题目从头再做一遍。做过一遍的题第二遍的正确率会虚高因为记住的是选项位置不是知识点。更有效的做法是把这份资料当成筛子分三轮过每一轮的目标不同。轮次时间目标具体做法第一轮2 天补概念空白只看名词解释和简答题遮住答案自己默写写不出来的标记出来第二轮2 天修判断偏差做选择题和多选题错题不抄答案只写「错在哪个判断上」第三轮1 天练输出流程两道编程题默写一遍不看书写完对照六步骨架自查第一轮的判断标准很直接能不能不看答案把「过拟合」「数据清洗」「线性回归」「分类」「均方误差」这五个名词各用两句话写清楚。写的时候注意带上关键限定词比如分类的目标变量 y 必须是离散的线性回归的目标变量必须是连续的这些限定词就是采分点。写完对照原文缺哪个限定词就补哪个不用整段重写。第二轮的错题归因要落到具体判断上不能只写「粗心」。比如把 KNN 选成无监督归因应该写成「忽略了训练集带标签这个前提」把欠拟合的措施选成增加数据量归因应该写成「把过拟合的处理方向套到了欠拟合上」。归因写得越具体第三轮复习时翻看的价值越高。第三轮默写编程题时把六步骨架写在草稿纸最上面当提示然后一步步往下写。写完重点检查三处X是不是二维、fit之后有没有predict和score、评估用的是准确率还是 R²。这三处是最常见的丢分位置检查一遍就能避开大半。我当时复习这门课第一遍也是从第一题刷到最后一题刷完感觉都会了结果模拟考里连着错了三道指标题。后来才发现问题不在题做得少而在于每次都是顺着题目的问法走没有自己主动把知识点拎出来过一遍。从那以后我每次复习这类题库型资料都强制先做一轮名词默写把概念从「眼熟」变成「能写出来」再去刷选择题。希望这份梳理能帮到你也祝你把这份答案用成一张地图而不是一叠答案。本文还有配套的精品资源点击获取