单元五

第19课 Pipeline:缩放与模型串联

任务场景:把缩放与模型装进同一条传送带
任务场景:把缩放与模型装进同一条传送带
原理图:Pipeline 把步骤打包成一条流水线
原理图:Pipeline 把步骤打包成一条流水线
原理图:先缩放,再交给对距离敏感的模型
原理图:先缩放,再交给对距离敏感的模型

一、任务目标

用手写串联与 Pipeline 两种写法完成「标准化→分类」。

二、核心概念讲清楚

Pipeline([('scaler', …), ('clf', …)]) 保证预处理与模型绑定,减少泄漏与漏步骤。

  • 步骤用名字标识
  • pipeline.fit 一次完成
  • 与 GridSearch 等工具更搭
1列出步骤缩放→分类
2构建 Pipeline按顺序放入
3fit训练集
4score/predict测试集

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

Pipeline([('scaler', StandardScaler()), ('knn', KNeighborsClassifier())])。

易错:管道外先手动乱套变换,导致训练预测不一致。

正确:让 Pipeline 统一管理变换。

想一想:Pipeline 如何帮助防止「测试集信息泄漏」?

四、解题思路

任务:用手写串联与 Pipeline 两种写法完成「标准化→分类」。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。

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

  1. 1明确任务「用手写串联与 Pipeline 两种写法完成「标准化→分类」。」:运行后你希望看到什么结果(文字、图形或计算结果)。
  2. 2用 print 把结果说出来,确认屏幕上出现预期内容。
  3. 3对照参考代码跑通后,只改一个参数,观察结果如何变化。

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

明确任务「用手写串联与…」…用print把结果说出来,…对照参考代码跑通后,只改一…

五、语句功能讲解

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

六、知识点讲解

Pipeline把缩放与模型等步骤串成一条流水线:fit 时一起学,predict 时按同一顺序变换,避免训练/测试预处理不一致。

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

七、编程练习

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

两种写法正确率应接近。

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

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=0
)

# 写法A:手写串联(复习)
scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)
X_test_s = scaler.transform(X_test)
clf = KNeighborsClassifier(n_neighbors=3).fit(X_train_s, y_train)
print("手写串联:", round(accuracy_score(y_test, clf.predict(X_test_s)), 3))

# 写法B:Pipeline 一次打包
pipe = Pipeline([
    ("scaler", StandardScaler()),
    ("clf", KNeighborsClassifier(n_neighbors=3)),
])
pipe.fit(X_train, y_train)
print("Pipeline:", round(accuracy_score(y_test, pipe.predict(X_test)), 3))

八、课堂练习

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

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

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

  3. Pipeline 的主要好处是?

  4. Pipeline.fit 应主要用?

九、本节小结

会手写串联,也会用 Pipeline 打包。