Skip to content

2 有哪些特征转换的方式?

jasonfreak edited this page Jul 28, 2016 · 6 revisions

  《使用sklearn做单机特征工程》一文概括了若干常见的转换功能:

类名 功能 说明
StandardScaler 数据预处理(无量纲化) 标准化,基于特征矩阵的列,将特征值转换至服从标准正态分布
MinMaxScaler 数据预处理(无量纲化) 区间缩放,基于最大最小值,将特征值转换到[0, 1]区间上
Normalizer 数据预处理(归一化) 基于特征矩阵的行,将样本向量转换为“单位向量”
Binarizer 数据预处理(二值化) 基于给定阈值,将定量特征按阈值划分
OneHotEncoder 数据预处理(哑编码) 将定性数据编码为定量数据
Imputer 数据预处理(缺失值计算) 计算缺失值,缺失值可填充为均值等
PolynomialFeatures 数据预处理(多项式数据转换) 多项式数据转换
FunctionTransformer 数据预处理(自定义单元数据转换) 使用单变元的函数来转换数据
VarianceThreshold 特征选择(Filter) 方差选择法
SelectKBest 特征选择(Filter) 可选关联系数、卡方校验、最大信息系数作为得分计算的方法
RFE 特征选择(Wrapper) 递归地训练基模型,将权值系数较小的特征从特征集合中消除
SelectFromModel 特征选择(Embedded) 训练基模型,选择权值系数较高的特征
PCA 降维(无监督) 主成分分析法
LDA 降维(有监督) 线性判别分析法

  按照特征数量是否发生变化,这些转换类可分为:

  • 无变化:StandardScaler,MinMaxScaler,Normalizer,Binarizer,Imputer,FunctionTransformer*
  • 有变化:OneHotEncoder,PolynomialFeatures,VarianceThreshold,SelectKBest,RFE,SelectFromModel,PCA,LDA
    FunctionTransformer*:自定义的转换函数通常不会使特征数量发生变化

  对于不造成特征数量变化的转换类,我们只需要保持特征不变即可。在此,我们主要研究那些有变化的转换类,其他转换类都默认为无变化。按照映射的形式,可将以上有变化的转换类可分为:

  • 一对一:VarianceThreshold,SelectKBest,RFE,SelectFromModel
  • 一对多:OneHotEncoder
  • 多对多:PolynomialFeatures,PCA,LDA

  原特征与新特征为一对一映射通常发生在特征选择时,若原特征被选择则直接变成新特征,否则抛弃。哑编码为典型的一对多映射,需要哑编码的原特征将会转换为多个新特征。多对多的映射中PolynomialFeatures并不要求每一个新特征都与原特征建立映射关系,例如阶为2的多项式转换,第一个新特征只由第一个原特征生成(平方)。降维的本质在于将原特征矩阵X映射到维度更低的空间中,使用的技术通常是矩阵乘法,所以它既要求每一个原特征映射到所有新特征,同时也要求每一个新特征被所有原特征映射。

Clone this wiki locally