用于混合类型的 ColumnTransformer
为不同列组分别进行预处理
用于混合类型的 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 反馈 — 无需本地设置。
此课程中的所有课时
- 为什么流水线胜过手动步骤
- 用于混合类型的 ColumnTransformer
- 使用 GridSearchCV 调参
- 保存并重新加载训练好的流水线