
简介这份PDF是模式识别与机器学习课程的期末考查试题及参考答案面向修读该课程的研究生及备考学生帮助梳理两大领域的核心概念与算法脉络。资源共1个PDF文件约453KB内容以问答形式展开便于集中复习与对照自测。试题覆盖模式识别与机器学习的共同问题及各自侧重点并系统整理K近邻、贝叶斯决策、DES加密、决策树、C均值聚类、遗传算法、神经网络、支持向量机、随机森林等常用算法的原理与优缺点同时延伸至CNN、RNN、Transformer及强化学习等前沿方向。读者可借此快速掌握分类、聚类、特征选择、信息融合等知识点的答题框架理解各算法的适用场景与局限为期末考核和后续研究提供清晰的复习索引。目前已有2291人学习下载适合需要系统回顾课程重点、查漏补缺的学习者参考。1. 一份期末考查 PDF 背后藏着模式识别与机器学习的完整复习路径如果你手里正躺着一份名为「模式识别与机器学习期末考查试题及参考答案」的 PDF大概率你面对的不是「要不要背答案」的问题而是「这门课到底在考什么、我该怎么把零散知识点串成能做题的体系」。我带过几届学生的课程辅导也帮不少跨专业的朋友梳理过这门课的复习路线血泪经验是这门课挂人从来不是因为公式太难而是因为复习时把贝叶斯、判别函数、聚类、降维当成四个孤立章节背考场上题目一交叉就翻车。这份 PDF 的价值不在答案本身而在于它暴露了考查的骨架贝叶斯决策、参数估计、线性判别、聚类、特征降维、评估指标这几块几乎必考。本文就顺着这个骨架把每一类题背后的原理、手算步骤、代码验证和踩坑点讲透让你既能应付纸面考查也能真正把模型跑起来。适合正在备考的学生也适合想系统补一遍经典机器学习基础的从业者。2. 从试题反推考点模式识别到底在考哪几类题一份典型的期末考查卷题目分布其实高度稳定。我统计过多份同类试卷的结构大致是贝叶斯决策与概率估计占 25% 到 30%线性分类器与判别函数占 20%聚类分析占 20%特征提取与降维占 15%剩下的给评估指标和综合应用题。这个分布不是巧合它对应的是模式识别这门课的知识主干——从概率建模到判别边界再到无监督结构和特征空间变换。2.1 贝叶斯决策类题目的识别特征这类题最常见的问法是给出一组先验概率和类条件概率密度要求写出最小错误率贝叶斯决策规则或者进一步求最小风险决策。识别特征很明显题干里一定出现「先验」「类条件」「损失矩阵」这类词。解题的核心是贝叶斯公式$$P(\omega_i \mid x) \frac{p(x \mid \omega_i) P(\omega_i)}{p(x)}$$分母 $p(x)$ 对所有类相同比较时可以直接约掉所以决策规则退化成比较 $p(x \mid \omega_i) P(\omega_i)$ 的大小。很多同学在这里翻车是因为忘了先验的作用——当两类条件概率密度差不多时先验直接决定归属。如果是最小风险决策就要引入损失矩阵 $\lambda_{ij}$表示真实为 $\omega_j$ 却判成 $\omega_i$ 的代价决策变成最小化条件风险$$R(\omega_i \mid x) \sum_j \lambda_{ij} P(\omega_j \mid x)$$这一步的关键是别把损失矩阵的行列搞反我见过太多人把 $\lambda_{ij}$ 和 $\lambda_{ji}$ 弄混整道题全错。2.2 参数估计与概率密度估计题目怎么下手第二类高频题是给一批样本要求用极大似然估计求参数或者用 Parzen 窗、k 近邻做非参数估计。极大似然的核心是构造对数似然函数并对参数求导置零。以单变量高斯为例均值和方差的估计结果分别是样本均值和样本方差这个结论要能自己推一遍因为考题经常让你「推导并说明」。非参数估计里Parzen 窗的窗宽 $h$ 是玄学参数$h$ 太小密度曲线全是尖峰$h$ 太大两个类糊成一团。k 近邻则把 $h$ 换成 $k$$k$ 越大越平滑。考试里常让你比较两者答题要点是Parzen 窗固定窗宽、点数可变k 近邻固定点数、窗宽可变。2.3 用一段代码把贝叶斯决策跑出来验证光手算容易错我一般会写一小段代码验证答案。下面用 Python 复现一个两类一维高斯的贝叶斯决策顺便画出决策边界import numpy as np import matplotlib.pyplot as plt # 两类先验与高斯参数 P [0.6, 0.4] # 先验概率 mu [0.0, 2.0] # 两类均值 sigma [1.0, 1.0] # 两类标准差 def gauss(x, m, s): # 一维高斯密度 return (1 / (np.sqrt(2 * np.pi) * s)) * np.exp(-((x - m) ** 2) / (2 * s ** 2)) x np.linspace(-5, 7, 500) post [gauss(x, mu[i], sigma[i]) * P[i] for i in range(2)] # 未归一化的后验 # 决策后验大的类获胜 decision np.where(post[0] post[1], 0, 1) # 找决策边界后验相等处 diff post[0] - post[1] idx np.where(np.diff(np.sign(diff)))[0] print(决策边界约在 x , x[idx]) plt.plot(x, post[0], labelclass 0) plt.plot(x, post[1], labelclass 1) plt.axvline(x[idx][0], colork, linestyle--) plt.legend() plt.show()逻辑说明先算未归一化的后验 $p(x|\omega_i)P(\omega_i)$因为归一化因子相同不影响比较。np.diff(np.sign(diff))用来定位后验差变号的位置那就是决策边界。参数说明P是先验改它边界会左右移动sigma改大会让对应类的后验更平缓边界随之偏移。跑一遍你就能直观看到先验和方差怎么影响分类比死记公式强得多。3. 线性判别与聚类两类必考题的手算与代码对照线性判别和聚类是试卷里最容易出综合题的两块。线性判别考的是「怎么找一个超平面把类分开」聚类考的是「没有标签时怎么把样本分组」。这两块看似无关其实都在处理样本在特征空间里的几何结构理解了这一点题目怎么变都不慌。3.1 Fisher 线性判别的手算步骤Fisher 的核心思想是投影把高维样本投影到一条直线上让类间距离尽量大、类内散度尽量小。准则函数是$$J(w) \frac{w^T S_B w}{w^T S_W w}$$其中 $S_B$ 是类间散度矩阵$S_W$ 是类内散度矩阵。最优解满足 $S_W^{-1} S_B w \lambda w$对于两类问题$w^* S_W^{-1}(m_1 - m_2)$$m_1, m_2$ 是两类均值。手算步骤固定先算两类均值再算类内散度 $S_W S_1 S_2$其中 $S_i \sum_{x \in \omega_i}(x - m_i)(x - m_i)^T$然后求逆乘均值差。考试里常给二维两三个点算起来不复杂但矩阵求逆容易算错建议算完代回验证 $w^T(m_1 - m_2) 0$。3.2 K-means 聚类的初始化陷阱K-means 是聚类题的主角算法本身简单初始化 $k$ 个中心把每个点分给最近的中心再更新中心为簇内均值迭代到收敛。但它的坑几乎全在初始化上。我做过一个实验同一组数据换不同初始中心最终簇划分能差出三成。常见做法是 k-means第一个中心随机选后续每个中心按与已有中心距离的平方成正比的概率选这样初始中心分散收敛更稳。考试里如果问「K-means 的缺点」答「对初始值敏感、需预设 $k$、对噪声和离群点敏感、只适合凸形簇」基本能拿满分。3.3 用代码对比 Fisher 与 K-means 的效果下面这段代码在同一组二维数据上跑 Fisher 投影和 K-means帮你把两者的几何直觉建立起来import numpy as np from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.cluster import KMeans # 构造两类二维数据 rng np.random.RandomState(0) X0 rng.randn(50, 2) np.array([0, 0]) X1 rng.randn(50, 2) np.array([3, 3]) X np.vstack([X0, X1]) y np.array([0] * 50 [1] * 50) # Fisher 线性判别降到一维 lda LinearDiscriminantAnalysis(n_components1) X_lda lda.fit_transform(X, y) print(Fisher 投影后两类均值:, X_lda[y 0].mean(), X_lda[y 1].mean()) # K-means不看标签聚成两类 km KMeans(n_clusters2, initk-means, n_init10, random_state0) labels km.fit_predict(X) print(K-means 簇中心:\n, km.cluster_centers_)逻辑说明LinearDiscriminantAnalysis内部就是求 $S_W^{-1}S_B$ 的特征向量n_components1表示投影到一维。K-means 用k-means初始化n_init10表示跑十次取最优避免单次初始化翻车。参数说明n_clusters就是 $k$实际项目里常用肘部法或轮廓系数选n_init调大更稳但更慢。跑完你会发现Fisher 用了标签所以投影后两类分得开K-means 没用标签簇中心未必落在真实类心上这就是有监督和无监督的本质差别。4. 特征降维与评估指标试卷最后一道大题的常客试卷压轴题经常把降维和评估揉在一起比如「用 PCA 降维后再分类比较降维前后的准确率」。这类题考的是你对「降维到底损失了什么」的理解以及评估指标会不会选错。4.1 PCA 的方差解释率怎么算PCA 的步骤是中心化数据求协方差矩阵做特征分解按特征值从大到小排序取前 $k$ 个特征向量投影。方差解释率就是前 $k$ 个特征值之和除以全部特征值之和。这个指标直接告诉你降维保留了多少信息。考试里常问「取几个主成分合适」标准答法是看累计方差解释率达到 85% 或 90% 对应的 $k$。但要注意PCA 是无监督的它保留的是方差大的方向不一定对分类有用——方差大的方向可能是噪声。这是 PCA 最容易被误解的点。4.2 准确率、召回率、F1 到底什么时候用哪个评估指标选错是综合题失分重灾区。准确率在类别不平衡时会骗人负样本占 99%全判负也有 99% 准确率。这时候要看召回率和精确率。召回率是「真实正例里被找出来多少」精确率是「判为正例的里有多少是真的正」。F1 是两者的调和平均。指标公式适用场景准确率(TPTN)/(TPTNFPFN)类别均衡精确率TP/(TPFP)误报代价高召回率TP/(TPFN)漏报代价高F12PR/(PR)精确召回都要兼顾选指标的原则是看业务代价漏报代价高就盯召回率误报代价高就盯精确率两者都重要用 F1。考试里如果题目给了具体场景一定要结合场景答别只背公式。4.3 交叉验证与混淆矩阵的代码实现下面用一段代码把降维、分类、评估串起来这也是压轴题的标准流程from sklearn.decomposition import PCA from sklearn.model_selection import cross_val_score from sklearn.linear_model import LogisticRegression from sklearn.metrics import confusion_matrix, classification_report from sklearn.datasets import load_iris X, y load_iris(return_X_yTrue) # 先看 PCA 保留多少方差 pca PCA(n_components2) X_pca pca.fit_transform(X) print(累计方差解释率:, pca.explained_variance_ratio_.sum()) # 五折交叉验证比较降维前后 clf LogisticRegression(max_iter500) score_raw cross_val_score(clf, X, y, cv5).mean() score_pca cross_val_score(clf, X_pca, y, cv5).mean() print(原始特征准确率:, score_raw, PCA 后:, score_pca) # 混淆矩阵看每一类 clf.fit(X_pca, y) print(confusion_matrix(y, clf.predict(X_pca))) print(classification_report(y, clf.predict(X_pca)))逻辑说明explained_variance_ratio_.sum()给出累计方差解释率判断降维是否合理。cross_val_score做五折交叉验证比单次划分更可靠。confusion_matrix和classification_report给出每一类的精确率、召回率、F1。参数说明n_components是保留主成分数cv是折数数据量小就调大折数。跑完你会看到PCA 降到二维后准确率可能略降但训练快很多这就是降维的取舍。5. 避坑与排查复习和做题时最容易翻车的五个点这一章是我这些年辅导里总结的高频翻车现场每一条都按「现象 → 原因 → 解决」写考前过一遍能省不少后悔药。现象一贝叶斯题算出的后验概率之和不为 1。原因通常是忘了除以归一化因子 $p(x)$或者把先验和类条件概率乘反了。解决先写全贝叶斯公式明确分子是 $p(x|\omega_i)P(\omega_i)$分母是对所有类求和最后再比较。现象二Fisher 判别求出的 $w$ 方向反了。原因是 $S_W^{-1}(m_1-m_2)$ 里均值差的顺序搞反或者矩阵求逆算错。解决算完检查 $w^T(m_1-m_2)$ 是否为正为负就取反方向不影响分类但影响投影符号。现象三K-means 每次跑结果都不一样。原因是初始中心随机且没设随机种子或者没做多次初始化。解决用 k-means 初始化设n_init大于 1固定random_state报告结果时说明是多次运行的最优。现象四PCA 降维后分类效果反而变差。原因是 PCA 无监督保留的方差大方向未必对分类有用或者降维过头丢了判别信息。解决对比降维前后的交叉验证分数必要时改用有监督的 LDA 降维或者保留更多主成分。现象五评估指标选错导致结论误导。原因是数据类别不平衡却只看准确率。解决先看类别分布不平衡就补看召回率、精确率、F1 和混淆矩阵报告时把多个指标一起给。提示考试时如果题目没指定评估指标主动说明「由于类别可能不平衡我同时给出准确率和 F1」这种答题习惯往往能加分。6. 把这份 PDF 用成复习地图我的三个具体习惯最后落到怎么真正用好这份试题及参考答案。我的第一个习惯是「反向标注」拿到答案后不直接背而是回到教材找到对应的知识点页码在 PDF 旁边标上「这题考的是最小风险决策教材第 X 章」这样一份卷子就变成了一张带索引的复习地图。第二个习惯是「改参数重做」把题目里的先验、均值、方差、$k$ 值改掉自己重新算一遍再写代码验证这样能暴露你是真懂还是背答案。第三个习惯是「口述推导」合上答案对着空气把贝叶斯公式、Fisher 准则、K-means 迭代、PCA 步骤各讲一遍讲不顺的地方就是没掌握的地方。我一般还会做一张对照表把每类题的「手算步骤」和「代码验证」并排放考前只看这张表。比如贝叶斯题左边写「写公式→约分母→比大小」右边写「gauss 函数算后验→np.where 决策」聚类题左边写「初始化→分配→更新→收敛」右边写「KMeans(n_clustersk, initk-means)」。这张表不用长一页纸就够但它逼你把理论和实现对齐比刷十套卷子都管用。还有一个容易被忽略的技巧参考答案里的数值结果自己用代码复现一遍。手算和代码结果对不上时别急着信答案先检查自己的公式和代码很多时候是答案本身有笔误或者题目条件有隐含假设。这种「不迷信答案」的习惯才是这门课真正想训练的东西。希望帮到你。本文还有配套的精品资源点击获取