特征工程是让已有数据更适配模型的关键步骤,核心包括缺失值处理(按数据类型选择填充策略)、类别编码(依基数与业务选择One-Hot/Target/Count等)、衍生特征构造(注入领域知识)、标准化(依模型需求选择Robust/MinMax/log1p)。

特征工程不是“加数据”,而是让已有数据更懂模型。它直接决定模型能学到什么,有时比换算法更有效。
识别并处理缺失值
缺失值不处理,树模型可能分裂失效,线性模型会报错或引入偏差。不能一概用均值填充——类别型字段用众数,时间序列考虑前向填充,高缺失率字段先评估是否保留。
- 数值型:看分布,偏态明显时用中位数;有业务含义的空值(如“未购买”)可单独编码为-1或新增二值特征“is_missing”
- 类别型:统一归为"Unknown",避免LabelEncoder报错;若缺失比例>30%,建议先分析缺失机制(是随机还是系统性缺失)
- 用sklearn.impute中的SimpleImputer统一管理策略,别在训练集和测试集分别fit
合理编码类别变量
类别数少(≤5)且无序,用One-Hot;类别数多(如城市、商品ID),优先用Target Encoding或Count Encoding,避免维度爆炸;有序类别(如“低/中/高”)可用Ordinal Encoding,但要确认顺序真有数值意义。
- Target Encoding记得做平滑(如加伪计数)+ 交叉验证分组,防止目标泄露
- 用category_encoders库比手写更稳,支持LeaveOneOut、WOE等进阶方式
- 对高基数字段,先统计频次,把低频合并为“Others”,再编码
构造有意义的组合与衍生特征
模型不会自动理解“周末订单转化率更高”,但你告诉它“is_weekend × order_count”,它就能学。关键不是堆数量,而是注入领域知识。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~