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 BeautifulSoup中文乱码问题的2种解决方法
Apr 22 Python
Python中的rfind()方法使用详解
May 19 Python
浅谈五大Python Web框架
Mar 20 Python
python保存文件方法小结
Jul 27 Python
Selenium(Python web测试工具)基本用法详解
Aug 10 Python
Python批量删除只保留最近几天table的代码实例
Apr 01 Python
使用python list 查找所有匹配元素的位置实例
Jun 11 Python
Tensorflow限制CPU个数实例
Feb 06 Python
python中加背景音乐如何操作
Jul 19 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
python创建字典及相关管理操作
Apr 13 Python
python神经网络学习 使用Keras进行回归运算
May 04 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
对象失去焦点时自己动提交数据的实现代码
2012/11/06 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
PHP数学运算与数据处理实例分析
2016/04/01 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
通过正则表达式实现表单验证是否为中文
2014/02/18 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
2018/06/05 Javascript
Vue项目添加动态浏览器头部title的方法
2018/07/11 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
微信小程序选择图片控件
2021/01/19 Javascript
python异常和文件处理机制详解
2016/07/19 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
对Python3中的input函数详解
2018/04/22 Python
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
2019/12/17 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
关于Python解包知识点总结
2020/05/05 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
关于.NET, HTML的五个问题
2012/08/29 面试题
办护照工作证明范本
2014/01/14 职场文书
铅球加油稿100字
2014/09/26 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
单位介绍信格式范文
2015/05/04 职场文书
导游词之湖州-太湖
2019/10/11 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python