快速答案
本答案页包含 Python 模型评估与准确率 的 4 道选择题、4 道填空题和 4 道输出预测题,每题都给出准确答案和简短解释。
答案已完整展示,建议先尝试作答,再用本页核对。第一次练习最好从互动练习页开始。
为什么要保留独立的测试集?
答案: 估计模型在未见样本上的表现
为什么: 独立测试集比再次评估训练数据更诚实。
精确率的分母是什么?
答案: 预测为正的样本数
为什么: 精确率等于真正例除以真正例加假正例。
召回率的分母是什么?
答案: 真实正例数
为什么: 召回率等于真正例除以真正例加假负例。
运行结果是什么?
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
为什么: 只有第一对样本的真实值为 1 且预测为 1。
补全真正例条件。
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
为什么: 真正例要求真实标签和预测都为正。
补全精确率的分母。
tp, fp, fn = 8, 2, 4
precision = tp / (tp + ____)
print(round(precision, 2))答案: fp
为什么: 精确率除以所有预测正例:真正例加假正例。
补全召回率的分母。
tp, fp, fn = 8, 2, 4
recall = tp / (tp + ____)
print(round(recall, 2))答案: fn
为什么: 召回率除以所有真实正例:真正例加假负例。
补全准确率的分母。
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
为什么: 准确率用正确预测数除以样本总数。
这段程序打印出什么?
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
为什么: 混淆矩阵的四个格子各有一个样本。
代码的输出结果是什么?
tp, fp, fn = 8, 2, 4
precision = tp / (tp + fp)
print(round(precision, 2))答案: 0.8
为什么: 精确率是 8 除以 10,保留两位为 0.8。
屏幕上会显示什么?
tp, fp, fn = 8, 2, 4
recall = tp / (tp + fn)
print(round(recall, 2))答案: 0.67
为什么: 召回率是 8 除以 12,保留两位为 0.67。
这段代码会输出什么?
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 道题。