编码分类列
独热编码和标签编码基础
编码分类列 是 CoddyKit 上的免费 Data Science Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Data Science Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Data Science Academy 课程共包含 4 节课。
为什么编码很重要
大多数模型只能理解数字,但您的数据中充满了红色、蓝色这样的词语。编码会将这些标签转换为模型可以学习的数字。🔢
名义型与有序型
有些类别具有顺序,例如小号、中号、大号;另一些类别(例如城市名称)则没有顺序。这种顺序决定了哪种编码方式更合理。
标签编码
标签编码会为每个类别分配一个整数:红色变成 0,蓝色变成 1。它很简单,但可能会凭空创造一个并不存在的顺序。
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
codes = le.fit_transform(df['color'])虚假顺序陷阱
如果蓝色是 1、绿色是 2,模型可能会认为绿色大于蓝色。对于名义型数据,这种虚假的排序可能会降低准确率。
独热编码
独热编码会为每个类别新建一列,并标记为 1 或 0。没有虚假的顺序,只有清晰的“是”或“否”标记。
pandas 中的 get_dummies
在 pandas 中,最快的独热编码方式是 get_dummies。传入一列数据后,它会将每个类别展开为独立的 0/1 列。
dummies = pd.get_dummies(df['color'])避免虚拟变量陷阱
这些列之间完全相关,因此请删除其中一列。这样可以保持线性模型稳定,并避免信息冗余。
pd.get_dummies(df['color'], drop_first=True)用于处理流程的 OneHotEncoder
对于模型,建议使用 scikit-learn 的 OneHotEncoder。它会记住学习到的类别,因此训练集和测试集始终能够完全对齐。
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(handle_unknown='ignore')有意编码顺序
当顺序确实有意义时,请自行进行映射,使“小”到“大”对应 1 到 3。序数映射可以保留原有含义。
order = {'small': 1, 'medium': 2, 'large': 3}
df['size_num'] = df['size'].map(order)警惕高基数
对包含数千个值的列进行独热编码,会展开成数千列。对于高基数数据,可以先将少见值归为一组。
处理未见过的类别
新数据中可能包含编码器从未见过的标签。请提前做好处理,避免未见过的类别导致预测步骤崩溃。
快速检查
您的颜色列没有自然顺序。哪种编码方式可以避免凭空创造错误的排名?
回顾:编码
您已经将文字转换成数字:无序类别使用独热编码,真实顺序使用序数映射,只有在顺序无关紧要时才使用标签编码。🎉
用 AI 导师学习 Python — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 30
- 课程
- 120
常见问题解答
「编码分类列」课时是免费的吗?
是的 — 「编码分类列」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Data Science Academy 课程的其余内容,请升级到 CoddyKit PRO。 Data Science Academy 课程共包含 4 节课。
「编码分类列」这节课中我会学到什么?
独热编码和标签编码基础 你通过在浏览器中直接运行的动手代码来练习 Data Science Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Data Science Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Data Science Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「编码分类列」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Data Science Academy 课中编写并运行代码吗?
能。每节 Data Science Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。