单元六
第21课 借用机器学习工具箱——认识sklearn

一、任务目标
用坐标把同学分成兴趣近邻两组,调用 sklearn 训练并预测,再用正确率检查。
二、知识点短列表
- sklearn=scikit-learn:常用的 Python 机器学习工具箱。
- 典型流程仍是:准备 X(特征)与 y(标签)→ 「训练模型」 训练→ 「模型预测」 预测→用测试集算分。
- 「KNeighborsClassifier」:看最近的 1 个邻居的标签来分类(呼应 nearer)。
- 「model」:用训练数据更新模型;「model」:给出预测标签。
- 「accuracy_score」:正确率,与本册 「accuracy」 同思想。
- 特征 X 常是“数字列表的列表”;标签 y 是与每一行对应的类别名。
- import 的是库;业务任务、合规与人主决定仍由人负责。
三、机器学习在说什么
工具箱不会发明新的机器学习类型,它把常见算法收成统一接口:几乎都是 「训练模型」 再 「模型预测」。你前面学的字典模型、规则分类、正确率,是在用“积木原件”理解同一套流程;sklearn 则是把原件换成工厂零件。
为什么还要先手写?因为只调库容易变成“会点按钮不会解释”。能说出:X 是特征、y 是标签、「训练模型」 是学、「模型预测」 是猜、「accuracy_score」 是考——才算真把本册接到真实生态。
k 近邻的直觉:新点问周围最近的训练点“你是哪一组?”。k=1 时只问最近那一个,和本册 「nearer」 精神一致。数据脏、标签错,库同样会学错——数据说话原则不因换库而失效。
把对照表抄进笔记:
- 本册 「train」/「build_model」 → 库 「训练模型」
- 本册 「模型预测」/「classify」 → 库 「模型预测」
- 本册 「accuracy」/「test」 → 库 「accuracy_score」
- 本册 「nearer」 → 库 「KNeighborsClassifier」
课堂纪律:先口头说清任务与标签,再写 import;先看测试正确率,再谈“模型厉害”。严禁为了刷分改测试标签——诚信条款对库代码同样生效。
想一想:若训练只有 2 个点且分属两组,新点落在正中间附近,k=1 会怎样决定?写一句你的理解。
要点串讲:sklearn 是机器学习工具箱;fit/predict/accuracy_score 对应本册训练、预测、正确率;KNeighborsClassifier 是近邻分类;先懂手工再调库;选型与隐私不交给库。本课过关标准:能跑通训练→预测→打分,并讲出三组对照词。
四、相关积木怎么用
- 「from sklearn」;打分用 「clf」(与 「accuracy_score」 同思想,且能直接变成 Mixly「模型打分」积木)。
- 「clf = KNeighborsClassifier」 → 「clf」 → 「clf」 → 「clf」
- 包装:「sk_train」 返回训练好的模型;「sk_accuracy」 内部用 「clf」 返回正确率。
走查:训练集 「X=[[1,1],[2,1],[8,8],[9,8]]」,「y=["A组","A组","B组","B组"]」。预测 「[[1,2]]」 应靠近 A 组;在 「[[2,2],[8,9]]」 上若真实标签为 A/B,正确率应为 1.0。
首次运行本课编程时,请在下方 Mixly「Python 3 Online」中编写;板内已含常用库,首次打开 Mixly 可能稍慢。
五、操作步骤
六、解题思路
任务:用坐标把同学分成兴趣近邻两组,调用 sklearn 训练并预测,再用正确率检查。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。
本课主要用到:屏幕输出。
- 1明确任务「用坐标把同学分成兴趣近邻两组,调用 sklearn 训练并预测,再用正确率检查。」:运行后你希望看到什么结果(文字、图形或计算结果)。
- 2用「打印」积木把结果说出来,确认屏幕上出现预期内容。
- 3把可复用的一段动作做成函数,主程序里调用它。
- 4对照参考积木(或代码)跑通后,只改一个参数,观察结果如何变化。
流程示意(可对照左侧文字)
七、图形块功能讲解
下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。
| 图形块 | 分类 | 作用 | 本课用法 |
|---|---|---|---|
![]() | 机器学习 | 用已标注数据学习(fit)。 | 本课编程练习中首次使用,载入后可在工具箱对照。 |
![]() | 机器学习 | 创建近邻模型,用于分类或回归。 | 本课编程练习中首次使用,载入后可在工具箱对照。 |
八、课堂练习
先完成两道正误判断,再做其余题目;选出后点「检查」。
判断:以为 import sklearn 就等于会机器学习;或只用库、说不清 fit/predict 在干什么;或拿训练集自己考自己却宣称“已经学会”。
判断:先对照本册接口再调库;训练与测试分开;库出的分仍要人解释、人决定是否采用。
判断:sklearn 是常用的机器学习工具箱(scikit-learn)。
判断:「训练模型」大体对应“用带标签例子训练”。
判断:accuracy_score 与本册正确率思想相近。
判断:会调用 sklearn 就可以不管隐私与选型。
判断:KNeighborsClassifier 与“看谁更近”的思路有关。
选择:本册 nearer/最近邻 →
九、知识点讲解
先弄清本课输入与输出,再进编程练习对照现象。
十、编程练习
用下拉列表切换题目;下方 Mixly 默认显示图形化积木。请在 Mixly 工具栏点「运行」;「检查」读取 Mixly 代码自动判题。
参考代码(对照抄写到下方 Mixly)
from sklearn.neighbors import KNeighborsClassifier
def sk_train(X, y):
clf = KNeighborsClassifier(n_neighbors=1)
clf.fit(X, y)
return clf
def sk_accuracy(clf, X, y_true):
return clf.score(X, y_true)
# 兴趣近邻:左下 A 组,右上 B 组
X = [[1, 1], [2, 1], [8, 8], [9, 8]]
y = ["A组", "A组", "B组", "B组"]
model = sk_train(X, y)
print(model.predict([[1, 2]]))
print(sk_accuracy(model, [[2, 2], [8, 9]], ["A组", "B组"]))
正在载入编程环境
正在载入 Mixly 图形化编程环境…
十一、本节小结
你现在能 import sklearn 的近邻分类器,完成 「训练模型」→「模型预测」→score(正确率,与 accuracy_score 同思想),并说出与本册 train/「模型预测」/accuracy/nearer 的对照;明白库是加速器,选型、隐私与人主决定仍由人守门。附录接口表已补上 sklearn 一行,可随时查阅。

