特征工程实战:从理论到代码

🎙️ 语音朗读 当前: 晓晓 (温柔女声)

概述

特征工程是机器学习成功的关键,本文系统介绍特征工程的各种技术与代码实现。

特征工程流程

flowchart TB
    RAW[原始数据] --> CLEAN[数据清洗]
    CLEAN --> TRANS[特征变换]
    TRANS --> SEL[特征选择]
    SEL --> ENG[特征构建]
    ENG --> MODEL[模型训练]

特征预处理

数值特征处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler

class NumericalFeatureProcessor:
"""数值特征处理器"""

def standard_scaling(self, X_train, X_test):
"""标准化"""
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
return X_train_scaled, X_test_scaled

def minmax_scaling(self, X_train, X_test):
"""归一化"""
scaler = MinMaxScaler()
return scaler.fit_transform(X_train), scaler.transform(X_test)

def robust_scaling(self, X_train, X_test):
"""鲁棒缩放,处理异常值"""
scaler = RobustScaler()
return scaler.fit_transform(X_train), scaler.transform(X_test)

类别特征编码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from sklearn.preprocessing import LabelEncoder, OneHotEncoder, TargetEncoder

class CategoricalFeatureProcessor:
"""类别特征处理器"""

def label_encoding(self, categories):
"""标签编码"""
le = LabelEncoder()
return le.fit_transform(categories)

def onehot_encoding(self, X_train, X_test):
"""独热编码"""
ohe = OneHotEncoder(sparse=False, handle_unknown='ignore')
return ohe.fit_transform(X_train), ohe.transform(X_test)

def target_encoding(self, X_train, y_train, X_test, smoothing=10):
"""目标编码"""
global_mean = y_train.mean()
agg = X_train.groupby(X_train.columns[0])[y_train.name].agg(['mean', 'count'])
smooth = (agg['count'] * agg['mean'] + smoothing * global_mean) / (agg['count'] + smoothing)
return smooth

特征选择

方法对比

方法 优点 缺点 适用场景
方差阈值 简单快速 可能丢失信息 初步筛选
相关系数 直观可解释 只处理线性 线性模型
RFECV 效果好 计算量大 通用
L1正则化 可处理高维 可能过度稀疏 高维数据

总结

mindmap
  root((特征工程))
    数据清洗
      缺失值处理
      异常值检测
      数据类型转换
    特征变换
      标准化
      归一化
      编码
    特征选择
      过滤法
      包装法
      嵌入法
    特征构建
      多项式特征
      交互特征
      聚合特征

好的特征工程是机器学习成功的关键,需要根据具体问题灵活运用各种技术。

© 2019-2026 ovo$^{mc^2}$ All Rights Reserved. | 站点总访问 28969 次 | 访客 19045
Theme by hiero