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 开发Activex组件方法
Nov 08 Python
python连接mysql数据库示例(做增删改操作)
Dec 31 Python
python通过wxPython打开一个音频文件并播放的方法
Mar 25 Python
Flask web开发处理POST请求实现(登录案例)
Jul 26 Python
浅谈python的输入输出,注释,基本数据类型
Apr 02 Python
简单了解python中对象的取反运算符
Jul 01 Python
python用quad、dblquad实现一维二维积分的实例详解
Nov 20 Python
解决Django中checkbox复选框的传值问题
Mar 31 Python
Pycharm中使用git进行合作开发的教程详解
Nov 17 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
Feb 25 Python
python缺失值的解决方法总结
Jun 09 Python
基于Python实现射击小游戏的制作
Apr 06 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输出数组中重名的元素的几种处理方法
2012/09/05 PHP
php输出xml属性的方法
2015/03/19 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
PHP配置ZendOpcache插件加速
2019/02/14 PHP
javascript中检测变量的类型的代码
2010/12/28 Javascript
Javascript面向对象编程
2012/03/18 Javascript
php 中序列化和json使用介绍
2013/07/08 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
JavaScript实现搜索框的自动完成功能(一)
2016/02/25 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
angular基于ng-alain定义自己的select组件示例
2018/02/23 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
cnpm加速Angular项目创建的方法
2018/09/07 Javascript
详解angular2 控制视图的封装模式
2018/12/27 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
[01:30:54]《加油DOTA》 第三期
2014/08/18 DOTA
python多线程用法实例详解
2015/01/15 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
2019/12/04 Python
python高级特性简介
2020/08/13 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
有机童装:Toby Tiger
2018/05/23 全球购物
傲盾软件面试题
2015/08/17 面试题
简单的JAVA编程面试题
2013/03/19 面试题
四年的个人工作自我评价
2013/12/10 职场文书
应届实习生的自我评价范文
2014/01/05 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
个人合作协议范本
2015/08/06 职场文书
详解thinkphp的Auth类认证
2021/05/28 PHP
Python实战之OpenCV实现猫脸检测
2021/06/26 Python
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技