opencv与机器学习常见笔试题整理(自用)

以下题目为之前做过的笔试题里面我不太清楚,或者做错的题目

题1

以下哪种算法不是基于集成学习(Ensemble Learning)的?
  A. 随机森林 (Random Forest)
  B. 支持向量机 (SVM)
  C. 梯度提升树 (GBDT)
  D. AdaBoost

B SVM是单一模型,不是集成学习方法

题2

主成分分析(PCA)的主要目的是?
  A. 可视化数据
  B. 降低数据维度
  C. 防止过拟合
  D. 以上都是

D PCA可用于降维、可视化、去噪和防止过拟合

题3

关于偏差(Bias)和方差(Variance),以下描述正确的是?
    A. 简单模型通常有高偏差和高方差
    B. 复杂模型通常有低偏差和高方差
    C. 我们的目标是同时最小化偏差和方差
    D. 过拟合与高偏差有关

B 复杂模型容易过拟合,表现为低偏差、高方差。

题4

以下评估指标中,哪个对不平衡数据集最不敏感?
    A. 准确率 (Accuracy)
    B. 精确率 (Precision)
    C. 召回率 (Recall)
    D. F1-Score

A 准确率在不平衡数据集中容易误导,其他指标更敏感。

详解

为什么是准确率?
1. 什么是不平衡数据集?
假设我们有一个医疗数据集,要预测病人是否患有一种罕见病(阳性)。
​
负样本(未患病):10,000人
​
正样本(患病):100人
这个数据集中,负样本占绝大多数(~99%),这就是一个典型的不平衡数据集。
​
2. 准确率 (Accuracy) 是如何计算的?
准确率是最直观的指标,计算的是所有预测正确的样本占总样本的比例。
准确率 = (TP + TN) / (TP + TN + FP + FN)
​
现在,我们来看一个极端的例子:
如果一个模型非常“懒”,它不管输入什么数据,永远只预测“未患病”(负类)。那么在这个数据集上:
​
真阴性 (TN) = 10,000(所有未患病的人都预测对了)
​
假阴性 (FN) = 100(所有患病的人都预测错了)
​
真阳性 (TP) = 0
​
假阳性 (FP) = 0
​
我们来计算这个“懒”模型的准确率:
准确率 = (10000 + 0) / (10000 + 0 + 0 + 100) = 10000 / 10100 ≈ 99.01%
​
这个模型明明一个病人都没检测出来,准确率却高达99%!这是一个完全无效的模型,但准确率却给了我们一个非常乐观的假象。
​
3. 为什么其他指标(B, C, D)更敏感?
其他指标关注的是少数类(正类)的表现,因此能立刻暴露模型的问题。
​
精确率 (Precision):在所有预测为阳性的样本中,有多少是真正的阳性。
​
上面的“懒”模型没有预测任何阳性,所以 TP = 0。它的精确率是 0 / (0 + 0),是未定义的(或可视为0),这直接表明模型在识别正类上完全失败。
​
召回率 (Recall):在所有真正为阳性的样本中,有多少被成功预测了出来。
​
“懒”模型的召回率是 0 / (0 + 100) = 0。这也清楚地表明它没能找出任何一个病人。
​
F1-Score:是精确率和召回率的调和平均数。它综合了对正类的判断能力。
​
因为精确率和召回率都是0,所以F1-Score也是0。
​
结论对比
指标  “懒”模型的值 是否暴露问题? 原因
准确率 (Accuracy)  ~99%    否   被多数类(负类)的巨大数量所“淹没”,对少数类不敏感
精确率 (Precision) 0   是   直接关注模型对正类的判断是否准确
召回率 (Recall)    0   是   直接关注模型找出了多少正类
F1-Score    0   是   综合了精确率和召回率
因此,准确率是最容易受到不平衡数据集误导的指标,它对于数据分布是“不敏感”的(即无法有效反映模型在少数类上的表现)。在处理不平衡数据时,应该优先使用精确率、召回率、F1-Score或AUC-ROC等指标。

题5

OpenCV中,用于计算两个图像或图像块之间相似度的函数是?
    A. `cv2.compare()`
    B. `cv2.matchTemplate()`
    C. `cv2.similarity()`
    D. `cv2.diff()`

B cv2.matchTemplate() 用于模板匹配,衡量图像相似度。

A  cv2.compare()
功能:这个函数用于逐像素地比较两个图像,并输出一个结果图像(而不是一个相似度分数)。它根据指定的比较操作(如是否相等、谁更大等)来生成一个新图像。
操作类型:例如 cv2.CMP_EQ(相等), cv2.CMP_GT(大于), cv2.CMP_GE(大于等于)等。
输出:一个与源图像大小相同的单通道图像,其中每个像素的值是比较结果(通常是255表示“真”,0表示“假”)。
示例用途:比较两幅图像哪些位置的像素完全相同,或者找出图像A中哪些像素值大于图像B。
与题目的区别:它输出的是一个图像掩膜(mask),而不是一个标量相似度值。
​
C cv2.similarity()  (OpenCV中不存在此函数)
​
D cv2.absdiff() 计算两个图像的绝对差

题6

32. 一个机器学习模型在训练数据集上表现优异,准确率达到了99%,但在从未见过的测试数据集上表现很差,准确率只有65%。这种现象最可能是什么原因造成的?
    A. 模型出现了欠拟合,无法捕捉数据中的基本规律。
B. 模型出现了过拟合,过度学习了训练数据中的噪声和细节。
C. 测试数据集的数量远大于训练数据集,导致模型无法泛化。
D. 学习率设置得太高,导致模型训练过程不稳定。
​

B 训练集表现好、测试集表现差是典型的过拟合。

1. 欠拟合 (Underfitting)
别名:高偏差 (High Bias)
什么意思?
学生根本没学明白。
他连课本上的练习题都没做好,知识点的皮毛都没掌握。
这通常是因为学生太“笨”(模型太简单)或者学习时间太短(训练不足)。
​
在机器学习中表现为何?
模型在训练数据上表现就很差(准确率低,误差大)。
模型在测试数据上表现同样很差。
模型没有捕捉到数据中的基本规律。
​
主要原因:
模型过于简单(例如用线性模型处理非线性问题)。
特征太少或特征工程没做好。
训练时间/轮数不够。
​
解决方法:
使用更复杂的模型(如从线性回归切换到多项式回归、决策树、神经网络)。
增加有价值的特征。
减少正则化(正则化是防止过拟合的,所以欠拟合时要减弱它)。
增加训练时间。
​
2. 过拟合 (Overfitting)
别名:高方差 (High Variance)
什么意思?
学生成了一个“死记硬背的书呆子”。
他把课本上的每一道练习题(包括里面的印刷错误和笔迹污点)都背得滚瓜烂熟,甚至记住了每道题的答案在书上的第几页第几行。
但他没有理解题目背后的知识点和原理。
​
在机器学习中表现为何?
模型在训练数据上表现极好(准确率非常高,误差几乎为0)。
模型在测试数据(新数据)上表现非常差。
模型不仅学习了数据中的普遍规律,还记住了训练数据中的噪声和随机波动。导致它对新的、没见过的情况泛化能力很差。
​
主要原因:
模型过于复杂(相对于数据量和特征数而言)。
训练数据量太少。
训练时间过长(“学过头了”)。
特征过多,其中包含了很多不相关或冗余的特征。
​
解决方法:
获取更多的训练数据(最有效的方法)。
降低模型复杂度(如降低多项式次数、剪枝决策树、减少神经网络层数或神经元数)。
应用正则化(如L1, L2),给模型增加约束,防止它变得太复杂。
提前终止训练。
使用Dropout(针对神经网络)

题7

33. 以下关于OpenCV中Mat对象描述错误的是?
    A. 它是OpenCV中存储图像的主要数据结构
    B. 它代表矩阵(Matrix)
    C. 它自动管理内存
    D. 它的形状总是(高度,宽度,通道数)

D Mat对象的形状不总是包含通道数,灰度图只有(height, width)。

什么是Mat对象?
你可以把 Mat 理解成OpenCV的“万能容器”或“数字矩阵”。它的全称是 Matrix,设计初衷就是用来高效地存储和操作任意维度的数值数据。在图像处理领域,它最常用的就是存储图像。
一张图像,本质上就是一个数字矩阵:
灰度图:是一个2D矩阵。每个元素(像素)的值代表该点的灰度强度(如0是黑色,255是白色)。
形状:(高度, 宽度)
例如:一个100x200的灰度图,Mat对象的形状就是 (100, 200)
彩色图(如BGR):是一个3D矩阵。你可以想象它是由3个2D矩阵(蓝色通道、绿色通道、红色通道)叠在一起构成的。
形状:(高度, 宽度, 通道数)
例如:一个100x200的彩色图,Mat对象的形状就是 (100, 200, 3)
​
​
它是OpenCV中存储图像的主要数据结构
正确。 这是Mat对象最核心的用途。无论是用cv2.imread()读图,还是用cv2.VideoCapture()读视频帧,得到的都是Mat对象。几乎所有OpenCV函数都以Mat对象作为输入和输出。
​
它代表矩阵(Matrix)
正确。 Mat就是Matrix的缩写。它的数据结构就是一个多维数组,完美符合矩阵的定义。
​
它自动管理内存
正确。 这是Mat对象一个非常强大的特性。它使用引用计数系统来自动管理内存。当你将一个Mat对象赋值给另一个变量时,OpenCV并不会立即复制整个数据矩阵,而是创建一个指向同一数据块的“头部信息”,并增加引用计数。只有当你要修改这个新变量的数据时,才会真正复制一份数据(写时复制,Copy-on-Write)。这大大提高了效率,避免了不必要的内存拷贝。你不需要像在C++中那样手动释放内存,Python的垃圾回收机制会与Mat的引用计数协同工作。
​
它的形状总是(高度,宽度,通道数)
错误。 这就是本题的答案,也是你需要理解的关键。
为什么D是错的?
因为Mat对象的形状取决于它存储的数据的维度和类型。
灰度图像:只有高度和宽度,没有通道数。它的形状是 (height, width)。如果你用 .shape 查看一个灰度图的Mat,你会得到一个包含2个元素的元组,例如 (480, 640)。
彩色图像:形状才是 (height, width, channels),例如 (480, 640, 3)。
非图像数据:Mat对象可以存储任何矩阵数据。例如:
一个机器学习中的特征数据集,形状可能是 (10000, 50),表示10000个样本,每个样本50个特征。
一个单行向量,形状是 (1, N)。
一个单列向量,形状是 (N, 1)。
一个纯标量,甚至可以是1x1的矩阵。

题8

1.  在机器学习中,将类别数据转换为数值格式的常用技术是 _____________。(例如:将‘红’,‘绿’,‘蓝’转换为0, 1, 2)

答案: 标签编码或者独热编码

题9

4.  在模型评估中,_____________ 指标是指所有预测正确的样本占总体本的比例。

答案: 准确率 (这题主要是忘记了,这里再复习一遍)

顺便把TP、TN、FP、FN复习一遍
- True Positives (TP):正确地预测为正类的数量
- False Positives (FP):错误地预测为正类的数量
- True Negatives (TN):正确地预测为负类的数量
- False Negatives (FN):错误地预测为负类的数量
                                              TP + TN 
准确率:指所有预测正确的样本占总体样本的比例 即   ——————————————
                                             TP+TN+FP+FN
                                                
                                                TP
精确率:指模型预测为正类的样本中真正为正类的比例 ————————————
                                              TP + FP
​
                                                TP
召回率:实际为正类的样本中被正确预测为正类的比例 ——————————————
                                              TP + FN
                                             
F1 分数(F1 Score):精确度和召回率的调和平均数,用来衡量模型的综合性能

题10

9.  OpenCV中,用于计算图像直方图的函数是 _____________。

答案: cv2.calcHist() 单纯忘记了

题11

10. 机器学习中,_____________ 是一种通过组合多个弱模型来创建一个强模型的技术

答案: 集成学习

题12

11. 在OpenCV中,从摄像头循环读取帧,并在按下‘q’键时退出的循环中,判断键盘输入的语句通常是 `if cv2._____________(1) & 0xFF == ord('q'):`。

答案:waitKey

这个还是有必要熟悉一下,最好记住

if cv2.waitkey(1) & 0xFF == ord('q'):

题13

12. 线性回归模型的参数通常通过 _____________ 方法进行估计,以最小化损失函数。

答案: 最小二乘法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值