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

一、任务目标
按完整清单完成一个自选项目,并诚实报告结果。
二、核心概念讲清楚
结课看重过程完整与表达清晰,而不是刷到最高分。写清问题、步骤、指标与局限。
- 问题一句话说明白
- 指标与划分方式公开
- 诚实标注参考来源
1选题分类或回归小问题
2实现可复现的代码
3评估测试集指标
4展示讲清收获与不足
三、跟着想一遍(小例子)
用公开小数据集做 KNN,报告测试正确率,并说明未调参的原因。
易错:只展示花哨图,说不清 fit/predict 发生了什么。
正确:听众能复述你的问题与结论。
想一想:若重做一次,你最想改进哪一步?
四、解题思路
任务:按完整清单完成一个自选项目,并诚实报告结果。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。
本课主要用到:屏幕输出。
- 1明确任务「按完整清单完成一个自选项目,并诚实报告结果。」:运行后你希望看到什么结果(文字、图形或计算结果)。
- 2用 print 把结果说出来,确认屏幕上出现预期内容。
- 3对照参考代码跑通后,只改一个参数,观察结果如何变化。
流程示意(可对照左侧文字)
五、语句功能讲解
本课用到的 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]")
正在载入编程环境
正在载入 Mixly 文本编程环境…
八、课堂练习
先完成两道正误判断,再做其余题目;选出后点「检查」。
判断:只抄参考代码,不看运行输出,也不改参数验证。
判断:先跑通,再对照「结课项目清单」改一处输入/参数,确认输出按预期变化;答错小测时读讲解。
结课报告至少应包含?
下列哪项符合数据规范?
九、本节小结
恭喜完成 20 课!你会用真实 sklearn API 做分类/回归/聚类,会读混淆矩阵与过拟合信号,会用 Pipeline,并按清单诚实完成项目。附录可随时速查。