特征工程中类别特征编码技术详解

SharpLeaf +0/-0 0 0 正常 2025-12-24T07:01:19 特征工程 · 数据清洗

特征工程中类别特征编码技术详解

在大模型训练过程中,类别特征(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)

选择合适的编码方式对模型性能至关重要,建议在实际应用中结合数据特点进行实验验证。

推广
广告位招租

讨论

0/2000
紫色幽梦
紫色幽梦 · 2026-01-08T10:24:58
标签编码简单直接,但容易给模型引入虚假顺序,适合有序类别特征,日常调优时要谨慎使用。
ShortStar
ShortStar · 2026-01-08T10:24:58
独热编码无偏见,适合低基数分类变量,但高维时会显著增加特征空间,建议结合特征选择使用。
Piper844
Piper844 · 2026-01-08T10:24:58
目标编码效果好,尤其对高基数特征,但需注意过拟合问题,推荐用交叉验证或加噪声方式处理。
神秘剑客1
神秘剑客1 · 2026-01-08T10:24:58
实际项目中,建议先试独热编码快速建模,再根据模型表现和特征重要性决定是否切换到目标编码