特征工程中的特征编码技术对比
在大模型训练中,特征编码是数据预处理的关键环节。本文将对比几种主流的特征编码方法,并提供可复现的代码示例。
1. 标签编码(Label Encoding)
这是最基础的编码方式,适用于有序分类变量。例如:
from sklearn.preprocessing import LabelEncoder
import pandas as pd
data = pd.DataFrame({'category': ['low', 'medium', 'high', 'low']})
le = LabelEncoder()
data['encoded'] = le.fit_transform(data['category'])
print(data)
2. 独热编码(One-Hot Encoding)
适用于无序分类变量,避免引入虚假的数值关系:
from sklearn.preprocessing import OneHotEncoder
import pandas as pd
data = pd.DataFrame({'color': ['red', 'blue', 'green', 'red']})
encoder = OneHotEncoder(sparse=False)
encoded = encoder.fit_transform(data[['color']])
print(pd.DataFrame(encoded, columns=encoder.get_feature_names_out()))
3. 目标编码(Target Encoding)
将类别映射为目标变量的均值,特别适合高基数分类特征:
import pandas as pd
from sklearn.model_selection import train_test_split
data = pd.DataFrame({'category': ['A', 'B', 'C', 'A', 'B'], 'target': [1, 0, 1, 1, 0]})
# 简单的目标编码实现
mean_target = data.groupby('category')['target'].mean()
data['encoded'] = data['category'].map(mean_target)
print(data)
实践建议
在实际应用中,需根据数据特征选择合适的编码方式。对于大模型训练,请确保编码后的特征不会引入数据泄露问题。
注意:避免在特征工程中直接使用原始数据集进行编码,应先划分训练集和验证集后再进行编码操作。

讨论