Data Science Academy · 课时

用于混合类型的 ColumnTransformer

为不同列组分别进行预处理

第 2 / 4 课13 个步骤

用于混合类型的 ColumnTransformer 是 CoddyKit 上的免费 Data Science Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Data Science Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Data Science Academy 课程共包含 4 节课。

列并不相同

真实表格会混合数值和类别,而每种类型都需要不同的预处理。对所有列使用同一个缩放器是行不通的。🧩

认识 ColumnTransformer

ColumnTransformer会对不同的列组应用不同的变换器,并将这一切集中在一个可以放入流水线的步骤中。

列出列组

首先确定哪些列是数值列,哪些列是类别列。然后按名称为每个组指定自己的变换器。

num_cols = ['age', 'income']
cat_cols = ['city', 'plan']

缩放数值

数值列通常需要使用StandardScaler,让大小不同的数值在建模前处于公平的尺度上。

from sklearn.preprocessing import StandardScaler

编码类别

类别列需要转换为数字,因此可以使用OneHotEncoder,将每个类别转换成一个独立的 0/1 列。

from sklearn.preprocessing import OneHotEncoder

连接各部分

每个条目都是由名称、变换器和所处理列组成的元组。ColumnTransformer会并行运行这些变换。

from sklearn.compose import ColumnTransformer
prep = ColumnTransformer([('num', StandardScaler(), num_cols), ('cat', OneHotEncoder(), cat_cols)])

将其接入流水线

将转换器放在第一步,将模型放在最后一步。现在,混合类型的数据预处理和建模都集中在一个流水线中。

pipe = Pipeline([('prep', prep), ('model', LogisticRegression())])

剩余列

默认情况下,未列出的列会被丢弃。如果您希望保留其余列而不做改动,请将remainder设为 passthrough。

ColumnTransformer([...], remainder='passthrough')

处理未见过的类别

测试数据中可能包含训练数据从未见过的类别。将handle_unknown设为 ignore,这样编码器会跳过它们,而不是直接崩溃。

OneHotEncoder(handle_unknown='ignore')

按类型选择列

不想再手动输入列名了吗?make_column_selector会根据数据类型获取列,让您的预处理能够随着表格变化自动适配。

from sklearn.compose import make_column_selector as selector

一次拟合,两条路径

调用一次 fit,就能在正确的列上同时训练缩放器和编码器。每条路径只会从自己的列中学习。

快速检查

您有数值列和分类列,它们需要不同的预处理。什么工具可以处理这种情况?

回顾

现在,您可以在一个流水线中使用ColumnTransformer,将数值列和分类列分别交给各自的转换器。接下来学习调参。🔧

免费开始

用 AI 导师学习 Python — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「用于混合类型的 ColumnTransformer」课时是免费的吗?

是的 — 「用于混合类型的 ColumnTransformer」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Data Science Academy 课程的其余内容,请升级到 CoddyKit PRO。 Data Science Academy 课程共包含 4 节课。

「用于混合类型的 ColumnTransformer」这节课中我会学到什么?

为不同列组分别进行预处理 你通过在浏览器中直接运行的动手代码来练习 Data Science Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Data Science Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Data Science Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「用于混合类型的 ColumnTransformer」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Data Science Academy 课中编写并运行代码吗?

能。每节 Data Science Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 为什么流水线胜过手动步骤
  2. 用于混合类型的 ColumnTransformer
  3. 使用 GridSearchCV 调参
  4. 保存并重新加载训练好的流水线
← 返回 Data Science Academy