本文将介绍处理类别型数据常用技术,以便将它们转换为适合机器学习算法使用的格式。
类别型数据是由一组离散的值组成的数据。
- 有序的(如教育水平:小学、中学、大学)
- 无序的(如颜色:红、绿、蓝)
以下是几种常用的类别型数据编码方法:
1 标签编码(Label Encoding)
标签编码将每个类别映射到一个整数。这种方法简单直接,但可能会引入不恰当的顺序关系。
用法:使用 sklearn.preprocessing.LabelEncoder
来实现标签编码
import pandas as pd
from sklearn.preprocessing import LabelEncoder
# 示例数据
data = {'Category': ['Red', 'Blue', 'Green', 'Blue', 'Red']}
df = pd.DataFrame(data)
# 创建 LabelEncoder 对象
le = LabelEncoder()
# 对 'Category' 列进行标签编码
df['Category_Encoded'] = le.fit_transform(df['Category'])
print(df)
2、独热编码(One-Hot Encoding)
通过将每个类别映射到一个二进制向量来实现,每个类别对应一个唯一的二进制向量。这种方法避免了引入顺序关系,但可能会导致特征数量急剧增加。
用法:可以使用 pandas.get_dummies
或 sklearn.preprocessing.OneHotEncoder
来实现独热编码。
3、目标编码(Target Encoding)
目标编码使用目标变量的统计量(如均值)来替换类别值。
# 目标编码
target_means = train.groupby('Category')['Target'].mean()
train['Target_Encoding'] = train['Category'].map(target_means)
test['Target_Encoding'] = test['Category'].map(target_means)