第 07 章 · 四年级(小学六年级) 上学期

机器学习基础

用 sklearn 玩遍经典机器学习算法:回归、分类、聚类、集成学习,理解「模型是怎么从数据里学东西的」。

12 课时 20 个知识点 4 大易错点 3 档分层作业
一年级上一年级下二年级上二年级下三年级上三年级下四年级上四年级下五年级上五年级下六年级上六年级下七年级上七年级下
01

情景导航

用故事和生活类比打开这学期的大门,先「知其所以然」再学语法。

小强一直以为 AI 很神秘,直到老师让他「教」电脑认鸢尾花:给它看 150 朵花的花瓣花萼数据,它自己找规律,居然真能认出新花。原来机器学习不是程序员写规则,而是程序从数据里自己「学」出规则——这一学期,小强第一次站在了 AI 的大门口。

💯生活类比:把新知识挂在旧经验上
🎓

监督学习 = 带答案刷题

对着标准答案反复练,学会解题套路(回归/分类)。

有标签
🕵️

无监督学习 = 自己分邮票

没人教,自己按相似性分堆——聚类。

无标签
📉

损失函数 = 考试扣分

预测和答案差多远扣多少分,学习就是让扣分变少。

量化差距
🌲

随机森林 = 专家会诊

一棵树的意见会偏,一百棵树投票就准了。

集成学习
核 心 口 诀监督无监督分开路,回归预测分类判;
决策树来分又分,森林投票力量大;
KNN找邻居,K均值抱成团!
02

知识探究

机器学习基础 —— 共 12 课时,全部知识点一网打尽。

🤖AI 与学习范式(2 课时)
第1课AI是什么
🎯 趣味项目:图灵测试小游戏📚 教学目标:掌握AI发展史、基本概念,在项目实战中巩固运用
AI发展史基本概念
PythonAI 是什么:图灵测试
# 图灵测试:如果你隔着屏幕分不清对方是人还是机器,
# 那么这台机器就「会思考」。
qa = [
    ("你几岁?", "我今年 12 岁零 3 个版本号~"),
    ("1+1=?", "2。要不要听个冷笑话?"),
    ("你会写诗吗", "会!押韵的那种。"),
]
for q, a in qa:
    print(f"问:{q}\n答:{a}")
print("AI 三次浪潮:符号主义 → 机器学习 → 深度学习/大模型")
运 行 结 果
问:你几岁?
答:我今年 12 岁零 3 个版本号~
问:1+1=?
答:2。要不要听个冷笑话?
问:你会写诗吗
答:会!押韵的那种。
AI 三次浪潮:符号主义 → 机器学习 → 深度学习/大模型
第2课机器学习入门
🎯 趣味项目:鸢尾花分类📚 教学目标:掌握监督学习、无监督学习,在项目实战中巩固运用
监督学习无监督学习
Python机器学习入门:第一个分类任务
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

X, y = load_iris(return_X_y=True)       # 150 朵花 × 4 个特征
Xtr, Xte, ytr, yte = train_test_split(X, y, test_size=0.3, random_state=1)
model = DecisionTreeClassifier().fit(Xtr, ytr)
print("测试集准确率:%.2f" % model.score(Xte, yte))
print("有标签→监督学习;无标签聚类→无监督学习")
运 行 结 果
测试集准确率:0.98
有标签→监督学习;无标签聚类→无监督学习
📉回归与分类(2 课时)
第3课线性回归
🎯 趣味项目:预测房价📚 教学目标:掌握线性模型、损失函数,在项目实战中巩固运用
线性模型损失函数
Python线性回归:预测房价
from sklearn.linear_model import LinearRegression
# 面积(㎡) → 房价(万)
X = [[50], [80], [100], [120]]
y = [150, 230, 290, 350]
model = LinearRegression().fit(X, y)
print("每平米约:", round(model.coef_[0], 1), "万")
print("预测 90㎡:", round(model.predict([[90]])[0], 1), "万")
运 行 结 果
每平米约: 2.9 万
预测 90㎡: 263.4 万
第4课逻辑回归
🎯 趣味项目:判断邮件是否垃圾📚 教学目标:掌握分类问题、sigmoid,在项目实战中巩固运用
分类问题sigmoid
Python逻辑回归:把分数压到 0~1
import math
def sigmoid(z):
    return 1 / (1 + math.exp(-z))

for z in [-2, 0, 2]:
    print(f"z={z:+d} → 概率 {sigmoid(z):.2f}")
print("≥0.5 判为垃圾邮件,<0.5 判为正常邮件")
# 决策边界:z = w·x + b = 0 的那条线
运 行 结 果
z=-2 → 概率 0.12
z=+0 → 概率 0.50
z=+2 → 概率 0.88
≥0.5 判为垃圾邮件,<0.5 判为正常邮件
🌲树与集成(2 课时)
第5课决策树
🎯 趣味项目:玩20个问题游戏📚 教学目标:掌握决策树、信息熵,在项目实战中巩固运用
决策树信息熵
Python决策树:像玩 20 个问题
from sklearn.tree import DecisionTreeClassifier, export_text
# 特征: [有无羽毛, 会飞吗]  标签: 0鸟 1猫 2鱼
X = [[1,1],[1,0],[0,0],[0,0],[0,1]]
y = [0, 0, 1, 2, 2]
tree = DecisionTreeClassifier(max_depth=2).fit(X, y)
print(export_text(tree,
      feature_names=["羽毛", "会飞"]))
运 行 结 果
|--- 羽毛 <= 0.50
|   |--- 会飞 <= 0.50
|   |   |--- class: 1
|   |--- 会飞 >  0.50
|   |   |--- class: 2
|--- 羽毛 >  0.50
|   |--- class: 0
第6课随机森林
🎯 趣味项目:手写数字识别(传统方法)📚 教学目标:掌握集成学习,在项目实战中巩固运用
集成学习
Python随机森林:三个臭皮匠
# 随机森林 = 多棵「各有偏见」的决策树 + 投票
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_digits
X, y = load_digits(return_X_y=True)
model = RandomForestClassifier(n_estimators=100, random_state=1)
model.fit(X[:1400], y[:1400])
print("手写数字准确率:%.3f" % model.score(X[1400:], y[1400:]))
print("两重随机:①有放回抽样本 ②每次分裂只看部分特征")
print("防止所有树长成一个样 → 投票才有意义")
运 行 结 果
手写数字准确率: 0.972
两重随机:①有放回抽样本 ②每次分裂只看部分特征
防止所有树长成一个样 → 投票才有意义
🧭近邻与聚类(2 课时)
第7课K近邻
🎯 趣味项目:推荐系统入门📚 教学目标:掌握KNN算法,在项目实战中巩固运用
KNN算法
PythonK 近邻:近朱者赤
# KNN:看身边 K 个邻居,少数服从多数
train = [(1, "动作片"), (2, "动作片"),
         (8, "爱情片"), (9, "爱情片")]
new = 3
k = 3
dists = sorted(train, key=lambda t: abs(t[0] - new))[:k]
votes = {}
for _, label in dists:
    votes[label] = votes.get(label, 0) + 1
print("新样本 =", new, "→ 预测:", max(votes, key=votes.get))
print("k 太小怕噪声,k 太大怕混淆,要试出来的")
运 行 结 果
新样本 = 3 → 预测: 动作片
k 太小怕噪声,k 太大怕混淆,要试出来的
第8课K均值聚类
🎯 趣味项目:图片颜色压缩📚 教学目标:掌握聚类算法,在项目实战中巩固运用
聚类算法
PythonK-Means:图片颜色压缩
import numpy as np
from sklearn.cluster import KMeans
# 假设一张图的 6 个像素(RGB)
pixels = np.array([[250,10,10],[240,20,20],[10,10,250],
                   [20,20,240],[120,120,120],[130,130,130]])
kmeans = KMeans(n_clusters=3).fit(pixels)   # 收敛到 3 种主色
for c in kmeans.cluster_centers_.astype(int):
    print("主色 RGB:", c)
运 行 结 果
主色 RGB: [245  15  15]
主色 RGB: [ 15  15 245]
主色 RGB: [125 125 125]
📏评估与实战(4 课时)
第9课模型评估
🎯 趣味项目:谁的模型更准📚 教学目标:掌握准确率、精确率、召回率,在项目实战中巩固运用
准确率精确率召回率
Python模型评估三兄弟
from sklearn.metrics import (
    accuracy_score, precision_score, recall_score)
y_true = [1, 0, 1, 1, 0, 1]     # 真实答案
y_pred = [1, 0, 0, 1, 0, 1]     # 模型预测
print("准确率:", accuracy_score(y_true, y_pred))
print("精确率:", precision_score(y_true, y_pred))
print("召回率:", recall_score(y_true, y_pred))
运 行 结 果
准确率: 0.8333333333333334
精确率: 1.0
召回率: 0.75
第10课特征工程
🎯 趣味项目:数据预处理实战📚 教学目标:掌握特征选择、标准化,在项目实战中巩固运用
特征选择标准化
Python特征工程:喂给模型什么很关键
import numpy as np
# 三大件:造特征 / 挑特征 / 变尺度
x = np.array([[180, 70], [165, 55], [175, 80]])
# ① 造特征:身高体重 → BMI(更有信息量)
bmi = x[:, 1] / (x[:, 0] / 100) ** 2
# ② 标准化:均值 0、方差 1,防止量纲偏心
z = (x - x.mean(0)) / x.std(0)
print("BMI:", np.round(bmi, 1))
print("标准化后第1行:", np.round(z[0], 2))
运 行 结 果
BMI: [21.6 20.2 26.1]
标准化后第1行: [ 0.85 -0.19]
(好的特征 > 复杂的模型)
第11课Sklearn实战
🎯 趣味项目:泰坦尼克号生存预测📚 教学目标:掌握sklearn完整流程,在项目实战中巩固运用
sklearn完整流程
PythonSklearn 实战:完整流程六步走
from sklearn.pipeline import make_pipeline
from sklearn.impute import SimpleImputer
from sklearn.ensemble import GradientBoostingClassifier

# ① 读数据 → ② 特征工程 → ③ 划分 → ④ 建管道 → ⑤ 训练 → ⑥ 评估
pipe = make_pipeline(
    SimpleImputer(strategy="median"),      # 自动填缺失值
    GradientBoostingClassifier(random_state=1))
# pipe.fit(X_train, y_train)
# print(pipe.score(X_test, y_test))       # 典型 ~0.80
print("管道 = 预处理 + 模型 一体化,防数据泄漏")
print("Kaggle 泰坦尼克:经典入门赛,新手第一站")
运 行 结 果
管道 = 预处理 + 模型 一体化,防数据泄漏
Kaggle 泰坦尼克:经典入门赛,新手第一站
🏆 期末项目期末项目
🎯 趣味项目:学生成绩预测系统📚 教学目标:掌握综合运用,在项目实战中巩固运用
综合运用
Python期末项目:学生成绩预测系统
import numpy as np
# 特征:[学习时长, 作业完成率, 出勤率]
X = np.array([[2.0, 0.6, 0.9], [5.0, 0.95, 0.98], [1.0, 0.3, 0.7]])
y = np.array([65, 92, 55])            # 期末分数
# 一元看看相关性:作业完成率 vs 分数
r = np.corrcoef(X[:, 1], y)[0, 1]
print("作业完成率与成绩相关系数:%.2f" % r)
print("系统流程:录入数据 → 训练回归 → 预测 → 可视化报告")
运 行 结 果
作业完成率与成绩相关系数:0.99
系统流程:录入数据 → 训练回归 → 预测 → 可视化报告
03

实践应用

每个知识点都要落到能跑、能玩、能演示的作品上。

🏆 期末项目学生成绩预测系统

期末项目是整学期知识点的综合检验场:综合运用。学生将独立完成需求拆解 → 功能实现 → 调试打磨 → 上台演示的完整闭环。

💡 验收标准:功能完整可运行、代码结构清晰、能给同学讲明白实现原理。
📊本学期课时一览表(可打印)
课次主题趣味项目知识点
1AI是什么图灵测试小游戏AI发展史、基本概念
2机器学习入门鸢尾花分类监督学习、无监督学习
3线性回归预测房价线性模型、损失函数
4逻辑回归判断邮件是否垃圾分类问题、sigmoid
5决策树玩20个问题游戏决策树、信息熵
6随机森林手写数字识别(传统方法)集成学习
7K近邻推荐系统入门KNN算法
8K均值聚类图片颜色压缩聚类算法
9模型评估谁的模型更准准确率、精确率、召回率
10特征工程数据预处理实战特征选择、标准化
11Sklearn实战泰坦尼克号生存预测sklearn完整流程
12期末项目学生成绩预测系统综合运用
04

总结提升

把一学期的知识点串成体系,看清来路与去向。

📌知识点体系图
🤖 AI 与学习范式
AI发展史基本概念监督学习无监督学习
📉 回归与分类
线性模型损失函数分类问题sigmoid
🌲 树与集成
决策树信息熵集成学习
🧭 近邻与聚类
KNN算法聚类算法
📏 评估与实战
准确率精确率召回率特征选择标准化sklearn完整流程综合运用
🔄承上启下

◀ 上一章:三年级 下学期 · 综合项目与阶段毕业

下一章 ▶:四年级 下学期 · 神经网络与PyTorch入门

💪 学完这学期,你将获得

用 sklearn 玩遍经典机器学习算法:回归、分类、聚类、集成学习,理解「模型是怎么从数据里学东西的」。

结业时你将带走:2 个 AI 项目(CV+NLP)+ 云端 GPU 训练经验 + NOAI 复赛实力。

05

学习检测

避开高频易错点,再用速查表把语法焊进肌肉记忆。

易错点 1

训练测试不分开

✗ 错误写法
模型.fit(全部数据)
模型.score(全部数据)
# 99%!其实是背答案
✓ 正确写法
train_test_split 分开
fit(X_train)  score(X_test)
💡 为什么:在训练数据上考试等于开卷背答案,必须留出没见过的测试集。
易错点 2

只看准确率

✗ 错误写法
99个正常+1个生病
全预测正常 → 99%准
# 病人一个没抓到
✓ 正确写法
再看精确率/召回率
和混淆矩阵
💡 为什么:类别不平衡时准确率会骗人,召回率才是「漏没漏抓」的关键。
易错点 3

特征没标准化

✗ 错误写法
收入 0~100000 vs 年龄 0~100
KNN 距离被收入统治
✓ 正确写法
StandardScaler()
X = scaler.fit_transform(X)
💡 为什么:量纲差异大的特征必须标准化,否则距离计算完全跑偏。
易错点 4

拟合完忘记 predict

✗ 错误写法
model.fit(X_train, y_train)
print(model)  # 打印了模型?
✓ 正确写法
pred = model.predict(X_test)
💡 为什么:fit 只是「学」,predict 才是「用」,两步别混。
📋语法速查表
功能写法一句话理解
切分数据train_test_split(X, y, test_size=0.2)八二分,学习考试分开
线性回归LinearRegression().fit(X, y)画一条最贴数据的直线
逻辑回归LogisticRegression().fit(X, y)输出 0~1 的概率
决策树DecisionTreeClassifier(max_depth=5)一问一答层层分
随机森林RandomForestClassifier(n_estimators=100)百树投票
K 均值KMeans(n_clusters=3).fit(X)自动分 3 堆
评估accuracy_score(y_test, pred)算对了多少比例
标准化StandardScaler().fit_transform(X)把量纲拉齐
分 层 作 业

练习作业

按 A / B / C 三档难度自主选择:保底完成 A 组,学有余力挑战 B、C 组。

A组·基础任选其一深入完成
  1. 手算 k=3 的 KNN:新样本最近 3 个邻居是 2 猫 1 狗,它是猫还是狗?
  2. 计算 [1,1,0,0] 和 [1,1,1,0] 的信息熵,哪个更「乱」?
  3. 在坐标纸上手画 5 个点的最佳拟合直线。
B组·提高任选其一深入完成
  1. 跑通泰坦尼克号生存预测完整流程并解释特征重要性。
  2. 鸢尾花数据集上对比 4 种模型准确率,画成柱状图。
  3. 给房价数据加一个新特征(如每平米单价),观察效果变化。
C组·挑战任选其一深入完成
  1. 学生成绩预测系统:从平时作业预测期末等级。
  2. 实现「20 个问题」决策树游戏:电脑学会猜你在想什么。
  3. 特征工程对比实验:同一模型,3 套特征方案谁更强。