答案页 · 12 道题

Python 模型评估与准确率练习答案

本页汇总 Python 模型评估与准确率 的 12 道练习。先做练习页,再回到这里核对准确答案和原因。

快速答案

本答案页包含 Python 模型评估与准确率 的 4 道选择题、4 道填空题和 4 道输出预测题,每题都给出准确答案和简短解释。

答案已完整展示,建议先尝试作答,再用本页核对。第一次练习最好从互动练习页开始。

01 · 选择题

为什么要保留独立的测试集?

  1. 让训练更慢
  2. 增加特征数量
  3. 不再需要标签
  4. 估计模型在未见样本上的表现正确答案

答案: 估计模型在未见样本上的表现

为什么: 独立测试集比再次评估训练数据更诚实。

02 · 选择题

精确率的分母是什么?

  1. 真负例数
  2. 真实正例数
  3. 预测为正的样本数正确答案
  4. 全部样本数

答案: 预测为正的样本数

为什么: 精确率等于真正例除以真正例加假正例。

03 · 选择题

召回率的分母是什么?

  1. 真实正例数正确答案
  2. 预测正例数
  3. 全部负例数
  4. 只有真正例

答案: 真实正例数

为什么: 召回率等于真正例除以真正例加假负例。

04 · 选择题

运行结果是什么?

actual = [1, 1, 0, 0]
predicted = [1, 0, 0, 1]
print(sum(a == 1 and p == 1 for a, p in zip(actual, predicted)))
  1. 4
  2. 2
  3. 3
  4. 1正确答案

答案: 1

为什么: 只有第一对样本的真实值为 1 且预测为 1。

05 · 填空题

补全真正例条件。

actual = [1, 1, 0, 0]
predicted = [1, 0, 0, 1]
tp = sum(a == 1 and p == ____ for a, p in zip(actual, predicted))
print(tp)

答案: 1

为什么: 真正例要求真实标签和预测都为正。

06 · 填空题

补全精确率的分母。

tp, fp, fn = 8, 2, 4
precision = tp / (tp + ____)
print(round(precision, 2))

答案: fp

为什么: 精确率除以所有预测正例:真正例加假正例。

07 · 填空题

补全召回率的分母。

tp, fp, fn = 8, 2, 4
recall = tp / (tp + ____)
print(round(recall, 2))

答案: fn

为什么: 召回率除以所有真实正例:真正例加假负例。

08 · 填空题

补全准确率的分母。

actual = [1, 1, 0, 0]
predicted = [1, 0, 0, 1]
accuracy = sum(a == p for a, p in zip(actual, predicted)) / ____(actual)
print(round(accuracy, 2))

答案: len

为什么: 准确率用正确预测数除以样本总数。

09 · 输出预测

这段程序打印出什么?

actual = [1, 1, 0, 0]
predicted = [1, 0, 0, 1]
tp = sum(a == 1 and p == 1 for a, p in zip(actual, predicted))
tn = sum(a == 0 and p == 0 for a, p in zip(actual, predicted))
fp = sum(a == 0 and p == 1 for a, p in zip(actual, predicted))
fn = sum(a == 1 and p == 0 for a, p in zip(actual, predicted))
print(tp, tn, fp, fn)

答案: 1 1 1 1

为什么: 混淆矩阵的四个格子各有一个样本。

10 · 输出预测

代码的输出结果是什么?

tp, fp, fn = 8, 2, 4
precision = tp / (tp + fp)
print(round(precision, 2))

答案: 0.8

为什么: 精确率是 8 除以 10,保留两位为 0.8。

11 · 输出预测

屏幕上会显示什么?

tp, fp, fn = 8, 2, 4
recall = tp / (tp + fn)
print(round(recall, 2))

答案: 0.67

为什么: 召回率是 8 除以 12,保留两位为 0.67。

12 · 输出预测

这段代码会输出什么?

actual = [0] * 95 + [1] * 5
predicted = [0] * 100
accuracy = sum(a == p for a, p in zip(actual, predicted)) / len(actual)
print(round(accuracy, 2))

答案: 0.95

为什么: 全部预测为负能得到 95% 准确率,但没有找到一个正例。

先试一遍题目

打开 Python 模型评估与准确率 练习页,用即时反馈回答同样的 12 道题。

练习本课