单元二

第9课 猜明天图书馆借几本——平均值预测

任务场景:在学校图书馆根据记录预测借阅量
任务场景:在学校图书馆根据记录预测借阅量

一、任务目标

根据前几天借阅量,用平均值猜下一天。

二、知识点短列表

  • 预测:根据历史猜未来数值或类别。
  • 平均值法:用过去的典型水平代表下一步。
  • 「sum」 得平均;「round」 取整。
  • 函数名 「predict_」 提醒这是预测接口。
  • 预测不是命令:人主决定是否采纳。
  • 「len」 不能为 0,否则除法无意义;本课默认至少 1 天记录。
  • 「round」 按四舍五入取整,便于按“本”统计;需要小数时再改接口。

三、机器学习在说什么

有监督不只做分类,也做预测(回归味任务)。小学用平均值,是因为公式透明:每一步你都算得清。复杂模型以后可能更好,但“先有可解释的基线”永远有用。

历史列表是数据;平均是算法;算出的整数是预测值。若某天开运动会借阅暴跌,平均值会偏——所以要结合常识检验,不能无脑执行。

与分类的联系:都是“从例子到输出”;差别是输出是类别名还是数字。接口思维一致:输入历史,返回预测。

平均值法的局限要讲清:它假设“明天和最近几天差不多”。若明天是开放日、运动会或寒潮,历史均值可能失效——所以预测值旁边必须留人的判断栏。本课程原则里的“人主决定”,在数值预测上特别具体:数字是建议,排班是决定。

计算细节:「sum/len」 得到小数,「round」 变成整数本,便于图书馆统计。检查题用常数列与等差列,是为了让你口算也能验算,避免“函数会跑但算理不懂”。

四、相关积木怎么用

  • 「history」:历史数字列表。
  • 「return round」。
  • 迷你例子:函数「predict_next」 → 10;「[2,4,6]」 → 4。

走查:输入 函数「predict_next」 → 输出 4,因为 (2+4+6)/3=4,round 后仍是 4。输入 「[10,10,10]」 → 输出 10,常数列的均值就是该常数。

空列表不能除:本课默认 history 至少 1 天。若遇到空表,应先报错或提示补数据,而不是让程序崩溃后假装有预测。

与分类对照:分类输出类别名,predict_next 输出数字;二者都是“从例子到输出”,接口思维一致。

检查锚点:[10,10,10]→10、[2,4,6]→4。运动会日在结果旁写人工调整说明。

想一想:history=[8,8,8,20] 时,均值是多少?round 后 predict_next 应返回几?

预测报告模板:历史天数=×;均值=×;round 后=×;是否含异常日=是/否;人的决定=采纳/下调/重算。五栏填完才把数字交给管理员。predict_next 只填前三项,后两项必须人写——这就是人主决定在数值预测上的落点。

边界:只有 1 天历史时均值等于该天;含异常高点时要报告“含/不含”两种结果给人选。对 [10,12,11,13] 与 [2,4,6] 先口算再跑函数,口算不过关不点检查。

要点串讲:预测根据历史猜未来;平均值法透明可验算;predict_next 用 sum/len/round;结果必须结合常识由人决定是否采纳。本课过关标准:能解释为何开放日可能让均值失效,并仍正确实现函数。加练:对 [8,8,8,20] 先口算均值再 round,讨论异常高的一天如何影响预测,要不要人工剔除。

五、操作步骤

步骤1
抄历史把近几天借阅量写成列表。
步骤2
写函数sum/len/round 组成 predict_next。
步骤3
跑例子对 [10,12,11,13] 打印预测值。
步骤4
人工判断问:明天有特殊活动吗?要不要调整。

六、解题思路

任务:根据前几天借阅量,用平均值猜下一天。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。

本课主要用到:屏幕输出。

  1. 1明确任务「根据前几天借阅量,用平均值猜下一天。」:运行后你希望看到什么结果(文字、图形或计算结果)。
  2. 2用「打印」积木把结果说出来,确认屏幕上出现预期内容。
  3. 3把可复用的一段动作做成函数,主程序里调用它。
  4. 4对照参考积木(或代码)跑通后,只改一个参数,观察结果如何变化。

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

任务:根据前几天借阅…用「打印」积木把结果说出来,…把可复用的一段动作做成函数…对照参考积木(或代码)跑通后,只改一…

七、图形块功能讲解

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

即时验算:[10,10,10]→10;[2,4,6]→4;[10,12,11,13] 和 46 均值 11.5 round 得 12。若明天运动会,在预测旁写“可能偏低/需人工调整”,体现人主决定。均值法是基线不是神谕。round 后才交整数本。历史至少一天,切勿对空的历史表做除法。

异常日处理流程:标出异常值→算含异常均值→算剔除后均值→两人讨论采用哪一个→记录理由。predict_next 可以跑两次不同 history,但选用哪次结果必须写进人的决定栏,不能只交一个数。

八、课堂练习

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

  1. 判断:无视历史数据随口猜;或把预测值当成必须执行的命令。

  2. 判断:用平均值给出可解释预测;结合常识检验后由人决定。

  3. 判断:预测结果也要检验,人决定采不采纳。

  4. 判断:平均值法是小学可用的最小预测模型。

  5. 判断:预测值等于命令,必须无条件执行。

  6. 选择:用历史数据猜明天借阅量 →

  7. 判断:history 为空时直接除法也没问题。

九、知识点讲解

猜明天图书馆借几本——平均值预测:对照任务看清输入、判断与可观察输出;改一处输入,确认输出跟着变。
  • 能用自己的话复述:输入是什么、按什么规则变、输出应怎样。
  • 练习时改一处、看一处,确认现象和概念对得上。

先弄清本课输入与输出,再进编程练习对照现象。

十、编程练习

用下拉列表切换题目;下方 Mixly 默认显示图形化积木。请在 Mixly 工具栏点「运行」;「检查」读取 Mixly 代码自动判题。

参考代码(对照抄写到下方 Mixly)
def predict_next(history):
    return round(sum(history) / len(history))

print(predict_next([10, 12, 11, 13]))

十一、本节小结

你现在能实现 predict_next:用 sum/len/round 从历史列表得到整数预测,并结合常识决定是否采纳。口算与函数必须同值;[10,10,10]与[2,4,6]锚点要会;异常日要双结果报告;预测旁必留人的决定栏;空历史不能除。build_model 与 「模型预测」 闭合字典模型闭环。