机器学习特征处理:特征工程

特征工程是什么?
有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。
好数据>多数据>好算法
其中数据特征工程概括图如下
在这里插入图片描述1、数据的量纲化
无量纲化使不同规格的数据转换到同一规格。常用的无量纲化方法有标准化和区间缩放法。标准化的前提是特征值服从正态分布,标准化后,其转换成标准正态分布;区间缩放法利用了边界值信息,将特征的取值区间缩放到某个特点的范围,例如[0,1]等。
1)标准化
在这里插入图片描述

2)区间缩放法
在这里插入图片描述
3)标准化与归一化的区别
简单来说,标准化是依照特征矩阵的列处理数据,其通过z-score(均值0,标准差1)的方法,将样本的特征值转换到同一量纲下;归一化是依照特征矩阵的行处理数据,其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为“单位向量”。规则为l2的归一化公式如下:
在这里插入图片描述
4)对定量特征二值化
定量特征的二值化的核心在于设定一个阈值,小于等于阈值的赋值为0,大于阈值的赋值为1,公式表达如下:Binarizer
5) 对定性特征哑编码OneHotEncoder
2、数据变换
常见的数据变换有基于多项式的、基于指数函数的、基于对数函数的
PolynomialFeatures:
基于单变元函数的数据变换可以使用一个同一的方式完成,使用preprocessing库的FunctionTransformer对数据进行对数函数转换的代码如下:
from numpy import log1p
from sklearn.preprocessing import FunctionTransformer
FunctionTransformer(log1p).fit_transform(iris.data)
3、特征选择
特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用;
特征与目标的相关性:这点比较显见,与目标相关性高的特征应当优先选择。
根据特征选择的形式又可以将特征选择方法分为3种:
Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者选择阈值的个数,选择特征;以下几种方法可以归纳为:
Filter
1)方差选择法:(使用方差选择法,先要计算各个特征的方差,选择方差大于阈值的特征。)
使用feature_selection库的VarianceThreshold
2)相关系数法(使用相关系数法,先要计算各个特征对目标值的相关系数的P值)
用feature_selection库的SelectKBest类结合相关系数来选择特征的代码如下:
3)卡方检验:经典的卡方检验是检验定性自变量对定性因变量的相关性。假设自变量有N种取值,因变量有M种取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距,构建统计量:
feature_selection库的SelectionKBest类结合卡方检验来选择特征的代码如下:
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
SelectKBest(chi2,k=2).fit_transform(iris.data,iris.target)
4)互信息法:经典的互信息也是评价定性自变量对定性因变量的相关性的
使用feature_selection库的SelectKBest类结合最大信息系数法来选择特征的代码如下:
from sklearn.feature_selection import SelectKBest
from minepy import MINE
def mic(x,y):
m = MINE()
m.compute_score(x,y)
return (m.mic(),0.5)
SelectKBest(lambda X, Y: array(map(lambda x:mic(x, Y), X.T)).T, k=2).fit_transform(iris.data, iris.target)
Wrapper:包装法
根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征;
1) 递归特征消除法
递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练。
使用feature_selection库的RFE类来选择特征的代码如下:
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
RFE(estimator=LogisticRegression(),n_features_to_select=2).fit_transform(iris.data,iris.target)
Embedded:嵌入法
先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是通过训练来确定特征的优劣。
1) 基于惩罚项的特征选择法:使用带惩罚项的基模型,除了筛选出特征外,同时也进行了降维。
使用feature_selection库的SelectFromModel类结合带L1惩罚项的逻辑回归模型,来选择特征的代码如下:
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
RFE(estimator=LogisticRegression(),n_features_to_select=2).fit_transform(iris.data,iris.target)
2) 基于树模型的特征选择法
树模型中GBDT也可以用来作为基模型进行特征选择,用feature_selection库的SelectFromModel类结合GBDT模型,来选择特征的代码如下:
from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import GradientBoostingClassifier
SelectFromModel(GradientBoostingClassifier()).fit_transform(iris.data,iris.target)
4、 降维:
当特征选择完成后,可以直接训练模型了,但是可能由于特征矩阵过大,导致计算量大、训练时间长的问题,因此降低特征矩阵维度也是必不可少的
另外还有主成分分析法(PCA)和线性判别分析(LDA),线性判别分析本身也是一个分类模型。
1) 主成分分析法(PCA)
from sklearn.decomposition import PCA
PCA(n_components=2).fit_transform(iris.data)
2) 线性判别分析法(LDA)
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
LDA(n_components=2).fit_transform(iris.data,iris.target)
5、多项式特征构造
机器学习,一些比赛竞赛中,通常会给一定的特征数据进行分类或者回归预测。有时需要构建更多的特征,然后对特征再进行特征选择。通过增加一些输入数据的非线性特征来增加模型的复杂度通常是有效的。一个简单通用的办法是使用多项式特征,这可以获得特征的更高维度和互相间关系的项。这在 PolynomialFeatures 中实现:
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
特工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。它包括特征抽取、特征处理特征降维等内容。特征工程对于机器学习的效果具有直接影响。 在Python中进行机器学习特征工程,可以使用多个库和工具来完成。下面是一些常用的Python库和工具: 1. Scikit-learn:Scikit-learn是一个功能丰富的机器学习库,提供了许多特征工程的方法,包括特征抽取、特征处理特征降维等。你可以使用Scikit-learn来进行特征选择、标准化、缺失值处理等操作。 2. Pandas:Pandas是一个用于数据分析和处理的库,提供了丰富的数据操作功能。你可以使用Pandas来加载和清洗数据,进行数据预处理特征选择。 3. Numpy:Numpy是Python中一个强大的数值计算库,提供了高效的数组操作功能。你可以使用Numpy来进行数值特征处理,如归一化、标准化和缩放等。 4. Featuretools:Featuretools是一个用于自动特征工程的库,它可以根据数据的结构和关系自动生成特征。你可以使用Featuretools来创建新的特征,通过组合和聚合现有特征。 5. Feature-Engine:Feature-Engine是一个专注于特征工程的库,提供了多个特征处理方法。你可以使用Feature-Engine来处理缺失值、离群值、编码分类变量等。 在进行机器学习特征工程时,你需要根据具体的问题和数据集选择适合的方法和工具。通过合理的特征工程处理,可以提高机器学习模型的性能和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值