💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在优快云上与你们相遇~💖
本博客的精华专栏:
【自动化测试】 【测试经验】 【人工智能】 【Python】
Sklearn 机器学习:分类列编码与目标列编码实战指南
在机器学习建模中,分类变量(Categorical Features)和目标列(Target)往往以字符串形式存在,这在训练模型前必须进行编码处理。本文将详细讲解如何使用 Scikit-learn
中的编码工具对这两类变量进行编码,包括:
- 特征编码(OneHotEncoder, OrdinalEncoder)
- 目标列编码(LabelEncoder)
- 混合特征批量编码(ColumnTransformer)
- 编码后的逆变换操作
- 工具差异与使用场景建议
🎯 一、为什么需要编码?
机器学习模型(尤其是基于数值计算的模型如 SVM、线性回归、神经网络等)无法直接处理字符串类型的变量。如果不编码,模型根本无法理解 'red'
、'blue'
、'yes'
、'no'
这些值的含义。
编码的目标:
- 将分类数据转换为模型可接受的数值;
- 避免引入顺序性误导;
- 与模型结构匹配,提升预测效果。
🧩 二、常见分类特征编码方式
2.1 使用 OrdinalEncoder
进行整数编码
from sklearn.preprocessing import OrdinalEncoder
import pandas as pd
df = pd.DataFrame({
'color': ['red', 'blue', 'green', 'blue', 'red']
})
encoder = OrdinalEncoder()
encoded = encoder.fit_transform(df[['color']])
df['color_encoded'] = encoded
print(df)
输出示例:
color | color_encoded |
---|---|
red | 2.0 |
blue | 0.0 |
green | 1.0 |
blue | 0.0 |
red | 2.0 |
📝 适用场景: 适合处理有顺序的分类特征(如“低、中、高”);
🛑 注意: 如果用于无序变量(如颜色),可能引入错误的顺序性假设。
2.2 使用 OneHotEncoder
进行独热编码
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(sparse