单元二
第10课 校园垃圾分类小助手——字典模型训练与预测

一、任务目标
用标注数据“训练”字典模型,再预测新名称。
二、知识点短列表
- 最小有监督闭环:训练数据→模型→预测。
- 「build_model」:从样本学成字典(本课名称不重复)。
- 「模型预测」:查字典;没有则“未知”。
- 「model」:安全读取。
- 项目要能说清:数据从哪来、怎么测、未知怎么处理。
- 本课假定训练名称不重复;若重复出现,后写入的标签会覆盖先前的值。
- 「model」 比直接 「model[name]」 安全,键不存在时不会抛错。
三、机器学习在说什么
字典模型把“记住见过的例子”做到极致:见过的名称原样回答,没见过的承认未知。它不会举一反三到近义词,但这正适合小学理解“训练/预测”两个阶段的分工。
真正的垃圾分类系统会用图像特征等,但接口思想相同:先 fit/train,再 predict。本课用透明字典,避免黑箱,让你看见模型里到底存了什么。
单元收束:有标签→可训练;训练后要预测;未知要诚实;人决定是否上线小助手。
把第6–10课串成故事给家长听:先有标签分类,再把标签统计清楚,再学会用正确率考试,再做一次数值预测,最后用字典模型跑通训练与预测。故事说得顺,说明有监督闭环真的进了脑子,而不是只记住五个函数名。
项目答辩三句模板:①数据来自……共几条;②模型是字典,见过的查得到,没见过返回未知;③我们用……测试,人决定是否在校园试用。缺一句就补一句,再展示代码。
四、相关积木怎么用
- 空字典 「model = {}」,循环 「model[name]=lab」。
- 预测:「return model」。
- 迷你例子:训练含纸盒后,「模型预测」→可回收;电池→未知。
走查:先 「model=build_model」,再 「模型预测」 → 可回收,因为字典里已有该键。再 「模型预测」 → 未知,因为 get 找不到键时返回默认值。
想一想:若训练后再追加 ("电池","有害") 并重新 build_model,此时 predict 电池应返回什么?
项目答辩追问三条:模型里现在有几个键?未见过的名称返回什么字符串?若要让电池从未知变有害,你改的是训练表还是手工改字典?答错第三条(去手工改字典)扣分——必须重建 build_model,保持训练/预测两阶段清晰。
闭环口令:采、标、训、测——训是 build_model,回答新样本是 predict。字典模型不会自动认识近义词。更新姿势:改训练表→重新 build_model→再 predict,不要手工改字典却声称训练过。
要点串讲:有监督闭环=训练数据→模型→预测;build_model 写入字典;predict 用 get 默认未知;项目要讲清来源、测法与未知策略。本课过关标准:演示见过与未见过两种预测,并答出“为何未知”。加练:向模型追加一条(电池, 有害)重新 build_model,再 predict 电池,观察从未知变为有害——理解训练更新模型。
五、操作步骤
六、解题思路
任务:用标注数据“训练”字典模型,再预测新名称。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。
本课主要用到:屏幕输出。
- 1明确任务「用标注数据“训练”字典模型,再预测新名称。」:运行后你希望看到什么结果(文字、图形或计算结果)。
- 2用「打印」积木把结果说出来,确认屏幕上出现预期内容。
- 3找出重复动作,用「计数循环/遍历」积木写成循环,少抄几遍。
- 4把可复用的一段动作做成函数,主程序里调用它。
- 5对照参考积木(或代码)跑通后,只改一个参数,观察结果如何变化。
流程示意(可对照左侧文字)
七、图形块功能讲解
下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。
| 图形块 | 分类 | 作用 | 本课用法 |
|---|---|---|---|
![]() | 机器学习 | 对新样本给出预测结果。 | 本课编程练习中首次使用,载入后可在工具箱对照。 |
即时验算:训练含纸盒后 predict 纸盒→可回收;predict 电池→未知。追加(电池,有害)并重建模型后,电池应变为有害。三步演示能口述,项目才算闭合。get 默认未知比直接下标安全。名称重复以后写覆盖。训与测两阶段分清,切勿混淆。
局限声明模板:本模型只会训练集里出现过的名称;近义词不会自动识别;未知表示需要人工或补数据。演示结尾必读这三句,否则评委追问“为什么不会认旧报纸”时无法回答。
八、课堂练习
先完成两道正误判断,再做其余题目;选出后点「检查」。
判断:没见过的垃圾硬猜成可回收;或训练与预测写乱,分不清阶段。
判断:先 build_model 再 predict;未知返回“未知”;上线前说明局限。
判断:有监督学习需要带标签的例子。
判断:未见过的类别,模型可能答未知。
判断:字典模型训练就是把样本写入字典。
判断:预测阶段不应再假装认识训练集外的名称。
选择:校园垃圾已有类别名要自动分 →
九、知识点讲解
- 自检:改一个输入,输出是否跟着变?变完能否继续听下一次?
- 排错:先看有没有输入,再看判断条件,最后看播报/执行是否接到。
先弄清本课输入与输出,再进编程练习对照现象。
十、编程练习
用下拉列表切换题目;下方 Mixly 默认显示图形化积木。请在 Mixly 工具栏点「运行」;「检查」读取 Mixly 代码自动判题。
参考代码(对照抄写到下方 Mixly)
train = [("纸盒", "可回收"), ("香蕉皮", "厨余"), ("报纸", "可回收"), ("剩菜", "厨余")]
def build_model(data):
model = {}
for i in range(len(data)):
name = data[i][0]
lab = data[i][1]
model[name] = lab
return model
def predict(model, name):
return model.get(name, "未知")
model = build_model(train)
print(predict(model, "纸盒"))
print(predict(model, "电池"))
正在载入编程环境
正在载入 Mixly 图形化编程环境…
十一、本节小结
你现在能用 build_model 把标注表写入字典,再用 「模型预测」 查询并在未见样本时返回未知;局限三句能口述;更新必须重建模型。下一单元用无标签归堆与距离,处理没有标准类别名的任务。
