-
Notifications
You must be signed in to change notification settings - Fork 21
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映射到维度更低的空间中,使用的技术通常是矩阵乘法,所以它既要求每一个原特征映射到所有新特征,同时也要求每一个新特征被所有原特征映射。