手把手教你用sklearn做特征工程

本文详细介绍了如何使用sklearn进行特征工程,包括数据预处理(无量纲化、二值化、哑编码、缺失值处理)、特征选择(Filter、Wrapper、Embedded方法)和降维(PCA、LDA)。通过实例演示了每个步骤的具体操作,为机器学习模型的构建提供了清晰的指导。
摘要由CSDN通过智能技术生成

前言

博主最近参加了几个kaggle比赛,发现做特征工程是其中很重要的一部分,而sklearn是做特征工程(做模型调算法)最常用也是最好用的工具没有之一,因此将自己的一些经验做一个总结分享给大家,希望对大家有所帮助

目录

1. 什么是特征工程?
2. 数据预处理
3. 特征选择
4. 降维

1. 什么是特征工程?

有这么一句话在业界广泛流传,数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。


特征工程主要分为三部分:
1. 数据预处理 对应的sklearn包:sklearn-Processing data
1. 特征选择 对应的sklearn包: sklearn-Feature selection
1. 降维 对应的sklearn包: sklearn-Dimensionality reduction


本文中使用sklearn中的IRIS(鸢尾花)数据集来对特征处理功能进行说明导入IRIS数据集的代码如下:

 1 from sklearn.datasets import load_iris
 2 
 3 #导入IRIS数据集
 4 iris = load_iris()
 5 
 6 #特征矩阵
 7 iris.data
 8 
 9 #目标向量
10 iris.target

2. 数据预处理

通过特征提取,我们能得到未经处理的特征,这时的特征可能有以下问题:

  • 不属于同一量纲:即特征的规格不一样,不能够放在一起比较。无量纲化可以解决这一问题。
  • 信息冗余:对于某些定量特征,其包含的有效信息为区间划分,例如学习成绩,假若只关心“及格”或不“及格”,那么需要将定量的考分,转换成“1”和“0”表示及格和未及格。二值化可以解决这一问题。
  • 定性特征不能直接使用:通常使用哑编码的方式将定性特征转换为定量特征,假设有N种定性值,则将这一个特征扩展为N种特征,当原始特征值为第i种定性值时,第i个扩展特征赋值为1,其他扩展特征赋值为0。哑编码的方式相比直接指定的方式,不用增加调参的工作,对于线性模型来说,使用哑编码后的特征可达到非线性的效果。
  • 存在缺失值:填充缺失值
  • 信息利用率低:不同的机器学习算法和模型对数据中信息的利用是不同的,之前提到在线性模型中,使用对定性特征哑编码可以达到非线性的效果。类似地,对定量变量多项式化,或者进行其他的数据变换,都能达到非线性的效果。

我们使用sklearn中的preproccessing库来进行数据预处理。

2.1 无量纲化

无量纲化使不同规格的数据转换到同一规格

2.1.1 标准化(也叫Z-score standardization)(对列向量处理)

将服从正态分布的特征值转换成标准正态分布,标准化需要计算特征的均值和标准差,公式表达为:



使用preproccessing库的StandardScaler类对数据进行标准化的代码如下:

1 from sklearn.preprocessing import StandardScaler
2 
3 #标准化,返回值为标准化后的数据
4 StandardScaler().fit_transform(iris.data)
2.1.2 区间缩放(对列向量处理)

区间缩放法的思路有多种,常见的一种为利用两个最值进行缩放,公式表达为:

  • 23
    点赞
  • 147
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值