单元六
第19课 记录我的一天活动——训练测试小闭环

一、任务目标
把一天活动标注后训练字典模型,再在测试对上算分。
二、知识点短列表
- 项目闭环:采集→标注→训练→测试。
train(data):学成字典模型。test(model, pairs):用测试对算正确率。- 要能说清数据来源与检验方法。
- 分数是证据,人主决定是否采用。
train得到的字典模型,未见过的活动名get会得到 None,与标准答案比较时算错。- 测试对数量为分母;至少准备 2 题,避免“只测 1 题就宣称学会”。
三、机器学习在说什么
综合课把有监督字典模型再跑一遍,重点是“说得清流程”。评委老师会问:数据谁标的?测试题从哪来?错了怎么办?
train 用字典推导式压缩写入;test 用 get 比较。测试期望 0.5 的例子故意含一道错题,提醒你:分数会揭露问题。
与第10课呼应:同样是字典模型,这里强调项目表达与检验叙事。
闭环检查表:采集是否合规→标注是否互查→train 是否只使用训练部分→test 是否用未见组合→分数如何解读→人是否决定采用。六格都打勾,才算综合课项目,而不是“会跑一段代码”。小组互评时互相追问:“你的测试对里有没有训练集原题?”答不上来就退回重做。
若测试分为 0.5,不要先改测试函数凑 1.0,先回头看标注与训练是否泄露、测试对是否出题合理。分数难看是朋友,虚假满分是陷阱。
四、相关积木怎么用
model[item[0]] = item[1]循环写入字典完成训练。model.get(x) == y判对。- 迷你例子:两题对一题 → 正确率 0.5。
走查:test(train([('a','1'),('b','2')]), [('a','1'),('b','9')]) → 返回 0.5,因为第一题对、第二题标准是 9 但模型里 b 对应 2。train 只负责写入,test 负责按对计算分。
活动四条再默写:早读/写作业→学习,打球/跑步→运动。测试勿全抄训练原句。分数难看先查标注,再查是否泄露,最后才怀疑除法。
检查锚点:嵌套表达式得到 0.5 时,能指出 b 那一对错在标签 9 对不上 2。全对应为 1.0。
闭环再念:采集→标注→train→test→人主决定。展板三栏与叙事三句同时过关才给星章;伪造分数取消结业资格。至少2道测试题,1道题的满分无说服力。
想一想:若测试两题全对,test 应返回多少?写成小数。
应返回 1.0。展板三栏与叙事三句同时过关才给星章。0.5 案例必须能指出错对:哪一对标签不符。禁止通过缩短测试集或改 test 函数分子来“美化”分数——诚信与正确率课同一条红线。
叙事三句:数据来源与条数;train 后测几题得多少分;是否采用及理由。0.5 时先指出哪一对错再改数据。泄露检查:测试题勿与训练题完全相同,至少改一道名称或场景。
要点串讲:项目闭环采集→标注→train→test;要写清来源与检验;分数难看先查数据与出题,不伪造满分;人主决定是否采用。本课过关标准:三栏展示板填满,且 test 示例得到 0.5 时能解释含义。加练:把测错的那一对改正标签后重测,观察分数上升,强调问题常在数据不在除法。
五、操作步骤
六、解题思路
任务:把一天活动标注后训练字典模型,再在测试对上算分。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。
本课主要用到:屏幕输出。
- 1明确任务「把一天活动标注后训练字典模型,再在测试对上算分。」:运行后你希望看到什么结果(文字、图形或计算结果)。
- 2用「打印」积木把结果说出来,确认屏幕上出现预期内容。
- 3找出重复动作,用「计数循环/遍历」积木写成循环,少抄几遍。
- 4写出判断条件:什么情况下走 A,什么情况下走 B。
- 5把可复用的一段动作做成函数,主程序里调用它。
- 6对照参考积木(或代码)跑通后,只改一个参数,观察结果如何变化。
流程示意(可对照左侧文字)
七、图形块功能讲解
本课用到的 Mixly 图形块均已在前面的课讲过。请直接对照编程练习搭积木;若有遗忘,回到该积木首次出现的课页复习。
即时验算:test(train([('a','1'),('b','2')]), [('a','1'),('b','9')])→0.5。展板三栏填满:来源、测法、是否采用。指出错的是哪一对,改标签后分数应上升。train 只写入,test 才算分。展板三栏必填。叙事三句与展板三栏这两项内容都必须齐全。
train 用字典推导写入;test 用 get 比较。未见过的 x 得到 None,与 y 不等算错。至少 2 道测试题;1 道题的 1.0 没有说服力。诚信:不改 test 函数凑分。
八、课堂练习
先完成两道正误判断,再做其余题目;选出后点「检查」。
判断:说不清数据来源;或只用训练集自测却宣称泛化完美。
判断:写清来源与测试方法;用 test 算分;人主决定采用与否。
判断:项目中应能说清数据来源与检验方法。
判断:train 之后仍需要测试。
判断:正确率是决定上线的唯一条件,人不用管。
选择:活动名称带标签再训练 →
判断:闭环包含采集、标注、训练、测试。
九、知识点讲解
- 自检:改一个输入,输出是否跟着变?变完能否继续听下一次?
- 排错:先看有没有输入,再看判断条件,最后看播报/执行是否接到。
先弄清本课输入与输出,再进编程练习对照现象。
十、编程练习
用下拉列表切换题目;下方 Mixly 默认显示图形化积木。请在 Mixly 工具栏点「运行」;「检查」读取 Mixly 代码自动判题。
参考代码(对照抄写到下方 Mixly)
data = [("早读", "学习"), ("打球", "运动"), ("写作业", "学习"), ("跑步", "运动")]
def train(data):
model = {}
for i in range(len(data)):
item = data[i]
model[item[0]] = item[1]
return model
def test(model, pairs):
ok = 0
for i in range(len(pairs)):
x = pairs[i][0]
y = pairs[i][1]
if model.get(x) == y:
ok = ok + 1
return ok / len(pairs)
model = train(data)
score = test(model, [("早读", "学习"), ("打球", "运动")])
print(score)
正在载入编程环境
正在载入 Mixly 图形化编程环境…
十一、本节小结
你现在能实现 train/test 闭环,说清数据来源与正确率含义,填满展板三栏;0.5案例能指出错对;并在分数不佳时先查标注而不是改分母;至少两道测试题;不改 test 凑分;来源三句话写清。can_collect 挡住敏感字段。