单元六

第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 可能稍慢。

五、操作步骤

步骤1
准备 X 与 y特征用数字列表;标签与每一行一一对应。
步骤2
创建并 fitKNeighborsClassifier 后调用 fit(X, y)。
步骤3
predict 新样本输入同样形状的特征,得到标签。
步骤4
score 打分用未参与训练的测试点检查(等同 accuracy_score)。

六、解题思路

任务:用坐标把同学分成兴趣近邻两组,调用 sklearn 训练并预测,再用正确率检查。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。

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

  1. 1明确任务「用坐标把同学分成兴趣近邻两组,调用 sklearn 训练并预测,再用正确率检查。」:运行后你希望看到什么结果(文字、图形或计算结果)。
  2. 2用「打印」积木把结果说出来,确认屏幕上出现预期内容。
  3. 3把可复用的一段动作做成函数,主程序里调用它。
  4. 4对照参考积木(或代码)跑通后,只改一个参数,观察结果如何变化。

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

任务:用坐标把同学分…用「打印」积木把结果说出来,…把可复用的一段动作做成函数…对照参考积木(或代码)跑通后,只改一…

七、图形块功能讲解

下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。

图形块分类作用本课用法
训练模型
机器学习用已标注数据学习(fit)。本课编程练习中首次使用,载入后可在工具箱对照。
K近邻分类/回归
机器学习创建近邻模型,用于分类或回归。本课编程练习中首次使用,载入后可在工具箱对照。

八、课堂练习

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

  1. 判断:以为 import sklearn 就等于会机器学习;或只用库、说不清 fit/predict 在干什么;或拿训练集自己考自己却宣称“已经学会”。

  2. 判断:先对照本册接口再调库;训练与测试分开;库出的分仍要人解释、人决定是否采用。

  3. 判断:sklearn 是常用的机器学习工具箱(scikit-learn)。

  4. 判断:「训练模型」大体对应“用带标签例子训练”。

  5. 判断:accuracy_score 与本册正确率思想相近。

  6. 判断:会调用 sklearn 就可以不管隐私与选型。

  7. 判断:KNeighborsClassifier 与“看谁更近”的思路有关。

  8. 选择:本册 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组"]))

十一、本节小结

你现在能 import sklearn 的近邻分类器,完成 「训练模型」→「模型预测」→score(正确率,与 accuracy_score 同思想),并说出与本册 train/「模型预测」/accuracynearer 的对照;明白库是加速器,选型、隐私与人主决定仍由人守门。附录接口表已补上 sklearn 一行,可随时查阅。