python中常用的九种预处理方法分享


Posted in Python onSeptember 11, 2016

本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍;

1. 标准化(Standardization or Mean Removal and Variance Scaling)

变换后各维特征有0均值,单位方差。也叫z-score规范化(零均值规范化)。计算方式是将特征值减去均值,除以标准差。

sklearn.preprocessing.scale(X)

一般会把train和test集放在一起做标准化,或者在train集上做标准化后,用同样的标准化器去标准化test集,此时可以用scaler

scaler = sklearn.preprocessing.StandardScaler().fit(train)
scaler.transform(train)
scaler.transform(test)

实际应用中,需要做特征标准化的常见情景:SVM

2. 最小-最大规范化

最小-最大规范化对原始数据进行线性变换,变换到[0,1]区间(也可以是其他固定最小最大值的区间)

min_max_scaler = sklearn.preprocessing.MinMaxScaler()
min_max_scaler.fit_transform(X_train)

3.规范化(Normalization)

规范化是将不同变化范围的值映射到相同的固定范围,常见的是[0,1],此时也称为归一化。

将每个样本变换成unit norm。

X = [[ 1, -1, 2],[ 2, 0, 0], [ 0, 1, -1]]
sklearn.preprocessing.normalize(X, norm='l2')

得到:

array([[ 0.40, -0.40, 0.81], [ 1, 0, 0], [ 0, 0.70, -0.70]])

可以发现对于每一个样本都有,0.4^2+0.4^2+0.81^2=1,这就是L2 norm,变换后每个样本的各维特征的平方和为1。类似地,L1 norm则是变换后每个样本的各维特征的绝对值和为1。还有max norm,则是将每个样本的各维特征除以该样本各维特征的最大值。
在度量样本之间相似性时,如果使用的是二次型kernel,需要做Normalization

4. 特征二值化(Binarization)

给定阈值,将特征转换为0/1

binarizer = sklearn.preprocessing.Binarizer(threshold=1.1)
binarizer.transform(X)

5. 标签二值化(Label binarization)

lb = sklearn.preprocessing.LabelBinarizer()

6. 类别特征编码

有时候特征是类别型的,而一些算法的输入必须是数值型,此时需要对其编码。

enc = preprocessing.OneHotEncoder()
enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])
enc.transform([[0, 1, 3]]).toarray() #array([[ 1., 0., 0., 1., 0., 0., 0., 0., 1.]])

上面这个例子,第一维特征有两种值0和1,用两位去编码。第二维用三位,第三维用四位。

另一种编码方式

newdf=pd.get_dummies(df,columns=["gender","title"],dummy_na=True)

7.标签编码(Label encoding)

le = sklearn.preprocessing.LabelEncoder() 
le.fit([1, 2, 2, 6]) 
le.transform([1, 1, 2, 6]) #array([0, 0, 1, 2]) 
#非数值型转化为数值型
le.fit(["paris", "paris", "tokyo", "amsterdam"])
le.transform(["tokyo", "tokyo", "paris"]) #array([2, 2, 1])

8.特征中含异常值时

sklearn.preprocessing.robust_scale

9.生成多项式特征

这个其实涉及到特征工程了,多项式特征/交叉特征。

poly = sklearn.preprocessing.PolynomialFeatures(2)
poly.fit_transform(X)

原始特征:python中常用的九种预处理方法分享

转化后:python中常用的九种预处理方法分享

总结

以上就是为大家总结的python中常用的九种预处理方法分享,希望这篇文章对大家学习或者使用python能有一定的帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
深入理解Python中各种方法的运作原理
Jun 15 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
May 16 Python
python selenium UI自动化解决验证码的4种方法
Jan 05 Python
python构建深度神经网络(续)
Mar 10 Python
Python 实现选择排序的算法步骤
Apr 22 Python
Windows下python3.6.4安装教程
Jul 31 Python
Python实现去除图片中指定颜色的像素功能示例
Apr 13 Python
python不使用for计算两组、多个矩形两两间的iou方式
Jan 18 Python
Django框架获取form表单数据方式总结
Apr 22 Python
python实现密码验证合格程序的思路详解
Jun 01 Python
python链表类中获取元素实例方法
Feb 23 Python
python re模块常见用法例举
Mar 01 Python
python 打印出所有的对象/模块的属性(实例代码)
Sep 11 #Python
python 打印对象的所有属性值的方法
Sep 11 #Python
全面了解python中的类,对象,方法,属性
Sep 11 #Python
Python读取图片属性信息的实现方法
Sep 11 #Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 #Python
基于asyncio 异步协程框架实现收集B站直播弹幕
Sep 11 #Python
asyncio 的 coroutine对象 与 Future对象使用指南
Sep 11 #Python
You might like
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
原生javascript获取元素样式属性值的方法
2010/12/25 Javascript
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
Vue中错误图片的处理的实现代码
2019/11/07 Javascript
Vue组件间数据传递的方式(3种)
2020/07/13 Javascript
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
python3获取url文件大小示例代码
2019/09/18 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
Java基础面试题
2012/11/02 面试题
竞选大队长演讲稿
2014/04/29 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
大学生村官考核材料
2014/05/23 职场文书
户外宣传策划方案
2014/05/25 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
太空授课观后感
2015/06/17 职场文书
新党员入党决心书
2015/09/22 职场文书
2019银行竞聘书
2019/06/21 职场文书
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书
python 调用js的四种方式
2021/04/11 Python