单元五

第20课 结课项目:自选分类或回归

任务场景:结课——自选分类或回归,走完规范流程
任务场景:结课——自选分类或回归,走完规范流程
原理图:回看全书地图,完成你的结课项目
原理图:回看全书地图,完成你的结课项目

一、任务目标

按完整清单完成一个自选项目,并诚实报告结果。

二、核心概念讲清楚

结课看重过程完整与表达清晰,而不是刷到最高分。写清问题、步骤、指标与局限。

  • 问题一句话说明白
  • 指标与划分方式公开
  • 诚实标注参考来源
1选题分类或回归小问题
2实现可复现的代码
3评估测试集指标
4展示讲清收获与不足

三、跟着想一遍(小例子)

用公开小数据集做 KNN,报告测试正确率,并说明未调参的原因。

易错:只展示花哨图,说不清 fit/predict 发生了什么。

正确:听众能复述你的问题与结论。

想一想:若重做一次,你最想改进哪一步?

四、解题思路

任务:按完整清单完成一个自选项目,并诚实报告结果。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。

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

  1. 1明确任务「按完整清单完成一个自选项目,并诚实报告结果。」:运行后你希望看到什么结果(文字、图形或计算结果)。
  2. 2用 print 把结果说出来,确认屏幕上出现预期内容。
  3. 3对照参考代码跑通后,只改一个参数,观察结果如何变化。

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

任务:按完整清单完成…用print把结果说出来,…对照参考代码跑通后,只改一…

五、语句功能讲解

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

六、知识点讲解

特征是从原始数据里抽出、对判断有用的量;标签是我们想预测的答案。分类就是根据特征给样本贴标签。特征选不好,后面模型再复杂也难做好。

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

七、编程练习

先理解上面的例子,再在下方 Mixly 运行与检查(含 scikit-learn)。

对照清单看输出。

参考代码(对照抄写到下方 Mixly)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, classification_report

# 结课示例:分类项目清单演示(可改成回归)
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.25, random_state=42
)
pipe = Pipeline([
    ("scaler", StandardScaler()),
    ("clf", KNeighborsClassifier(n_neighbors=5)),
])
pipe.fit(X_train, y_train)
y_pred = pipe.predict(X_test)
print("训练正确率:", round(accuracy_score(y_train, pipe.predict(X_train)), 3))
print("测试正确率:", round(accuracy_score(y_test, y_pred), 3))
print()
print(classification_report(y_test, y_pred, digits=3))
print("清单:数据[OK] 拆分[OK] 模型[OK] 训练/测试指标[OK] 报告[OK]")

八、课堂练习

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

  1. 判断:只抄参考代码,不看运行输出,也不改参数验证。

  2. 判断:先跑通,再对照「结课项目清单」改一处输入/参数,确认输出按预期变化;答错小测时读讲解。

  3. 结课报告至少应包含?

  4. 下列哪项符合数据规范?

九、本节小结

恭喜完成 20 课!你会用真实 sklearn API 做分类/回归/聚类,会读混淆矩阵与过拟合信号,会用 Pipeline,并按清单诚实完成项目。附录可随时速查。