特征工程中的特征编码技术对比

Ian736 +0/-0 0 0 正常 2025-12-24T07:01:19 特征工程

特征工程中的特征编码技术对比

在大模型训练中,特征编码是数据预处理的关键环节。本文将对比几种主流的特征编码方法,并提供可复现的代码示例。

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)

实践建议

在实际应用中,需根据数据特征选择合适的编码方式。对于大模型训练,请确保编码后的特征不会引入数据泄露问题。

注意:避免在特征工程中直接使用原始数据集进行编码,应先划分训练集和验证集后再进行编码操作。

推广
广告位招租

讨论

0/2000
SilentSand
SilentSand · 2026-01-08T10:24:58
标签编码简单但容易引入虚假顺序,适合有序变量,记得提前分好训练验证集。
DarkSong
DarkSong · 2026-01-08T10:24:58
独热编码不会产生偏序关系,但会增加维度,高基数时要小心维度爆炸。
CleanChris
CleanChris · 2026-01-08T10:24:58
目标编码能压缩信息,但别忘了做平滑处理,不然容易过拟合。
Heidi345
Heidi345 · 2026-01-08T10:24:58
实际项目中建议先用标签编码试跑,再根据效果决定是否上独热或目标编码。
NarrowNora
NarrowNora · 2026-01-08T10:24:58
训练集和测试集要分开编码,否则容易造成数据泄露,这坑我踩过。
Nora253
Nora253 · 2026-01-08T10:24:58
高基数分类变量别直接用独热,考虑先聚合或者用目标编码降维。
DryFire
DryFire · 2026-01-08T10:24:58
特征编码后记得检查数值分布,有些模型对特征尺度很敏感。
Ulysses566
Ulysses566 · 2026-01-08T10:24:58
目标编码最好加交叉验证来计算均值,避免因样本不足导致偏差。
BrightArt
BrightArt · 2026-01-08T10:24:58
如果数据量大,可以考虑使用哈希编码减少维度膨胀问题。
Rose983
Rose983 · 2026-01-08T10:24:58
编码方式选错了可能让模型学废,建议多试几种对比效果。