特征工程中类别特征编码技术详解
在大模型训练过程中,类别特征(Categorical Features)的处理是特征工程的核心环节之一。本文将深入探讨几种主流的类别特征编码方法,并提供可复现的代码示例。
1. 标签编码(Label Encoding)
标签编码是最基础的编码方式,将每个类别映射为一个整数。
from sklearn.preprocessing import LabelEncoder
import pandas as pd
df = pd.DataFrame({'color': ['red', 'blue', 'green', 'red']})
le = LabelEncoder()
df['color_encoded'] = le.fit_transform(df['color'])
print(df)
2. 独热编码(One-Hot Encoding)
独热编码将每个类别转换为一个二进制向量,避免引入虚假的顺序关系。
from sklearn.preprocessing import OneHotEncoder
import pandas as pd
df = pd.DataFrame({'color': ['red', 'blue', 'green', 'red']})
encoder = OneHotEncoder(sparse=False)
encoded_features = encoder.fit_transform(df[['color']])
feature_names = encoder.get_feature_names_out(['color'])
result_df = pd.DataFrame(encoded_features, columns=feature_names)
print(result_df)
3. 目标编码(Target Encoding)
目标编码利用目标变量的统计信息进行编码,特别适用于高基数类别特征。
import pandas as pd
from sklearn.model_selection import cross_val_score
df = pd.DataFrame({'color': ['red', 'blue', 'green', 'red', 'blue'], 'target': [1, 0, 1, 1, 0]})
# 计算每个类别的目标均值
target_mean = df.groupby('color')['target'].mean()
df['color_target_encoded'] = df['color'].map(target_mean)
print(df)
4. 频率编码(Frequency Encoding)
频率编码基于类别出现的频率进行编码,适用于类别分布不均的情况。
import pandas as pd
df = pd.DataFrame({'color': ['red', 'blue', 'green', 'red']})
frequency = df['color'].value_counts()
df['color_frequency'] = df['color'].map(frequency)
print(df)
选择合适的编码方式对模型性能至关重要,建议在实际应用中结合数据特点进行实验验证。

讨论