单元二

第8课 先学后考再打分——训练集、测试集与正确率

任务场景:训练集与测试集分开放在两个托盘
任务场景:训练集与测试集分开放在两个托盘

一、任务目标

理解训练集用来学习、测试集用来检查,正确率是测对的比例;能把样本分开,并算出测试正确率。

二、我们要学什么

  • 学习要点:先学后考再打分|训练集、测试集与正确率
  • 本课过关:能完成:说出不能用同一批数据既学又考;载入体验程序,指出先在训练集上建立规则,再在测试集上计分;测试标签改错后,正确率跟着变。
  • 示例对齐:体验题对应本课「编程体验」;完整代码对应编程题1;补全与独立编写对应编程题2–3。均在 Mixly 图形化积木中完成。

三、本节要点

本课要认识训练、测试与正确率。重难点是测试样本不得出现在训练中,否则「全对」可能只是背题。要点对齐「先学后考再打分|训练集、测试集与正确率」。

1读场景明确真实任务
2对要点先学后考再打分|训练集、测试集与正确率
3载入运行图形化积木

四、解题思路

任务:分开训练与测试,并计算正确率。请分清:训练用哪一批,考试用哪一批。

本课主要用到:Mixly 图形化积木与屏幕输出。

  1. 1明确任务「先学后考」:输出应是测试集上的正确率。
  2. 2用训练集建立规则,再用测试集逐条对照标签。
  3. 3改一处测试标签后重算,观察正确率是否跟随。

流程示意(可对照左侧文字)

任务:先学后考用训练集建立规则改一处测试标签后重算

五、图形块功能讲解

本课用到的 Mixly 图形块均已在前面的课讲过。请直接对照编程练习搭积木;若有遗忘,回到该积木首次出现的课页复习。

六、知识点讲解

训练集用来学习,测试集用来检查是否真会。正确率等于测对条数除以测试总条数。本课先学后考再打分——测试样本不应出现在训练中;同一批上「全对」不能说明会推广。

先弄清:学和考必须分开;再进编程练习对照正确率。

七、编程练习

用下拉列表切换题目;下方 Mixly 默认显示图形化积木。请在 Mixly 工具栏点「运行」;「检查」读取 Mixly 代码自动判题。请先读本页「四、解题思路」与「五、图形块功能讲解」,再点载入。

参考代码(对照抄写到下方 Mixly)
def accuracy(preds, truths):
    ok = 0
    for i in range(len(preds)):
        p = preds[i]
        t = truths[i]
        if p == t:
            ok = ok + 1
    return ok / len(truths)

print(accuracy(["水果", "蔬菜", "水果"], ["水果", "蔬菜", "蔬菜"]))

八、课堂练习

先完成两道正误判断,再做其余题目;选出后点「检查」。

  1. 判断:正确率等于测试时答对的条数除以测试总条数。

  2. 判断:把测试集和训练集做成完全同一批,正确率就最能说明模型已经学会。

  3. 「先学后考」指的是?

  4. 正确率等于 1,就能保证?

  5. 本课强调的原则是?

九、本节小结

本课主题是训练与测试:先在训练集上学,再在测试集上算正确率。不可用同一批数据既学又考。