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使用scrapy抓取网站sitemap信息的方法
Apr 08 Python
Python实现在线音乐播放器
Mar 03 Python
python 环境变量和import模块导入方法(详解)
Jul 11 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
Apr 23 Python
解决python写入mysql中datetime类型遇到的问题
Jun 21 Python
Tensorflow加载预训练模型和保存模型的实例
Jul 27 Python
在Pycharm中对代码进行注释和缩进的方法详解
Jan 20 Python
django实现用户注册实例讲解
Oct 30 Python
python实现横向拼接图片
Mar 23 Python
Django与AJAX实现网页动态数据显示的示例代码
Feb 24 Python
Python Django搭建文件下载服务器的实现
May 10 Python
只用Python就可以制作的简单词云
Jun 07 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查询域名状态whois的类
2006/11/25 PHP
php中取得文件的后缀名?
2012/02/20 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
豆瓣网的jquery代码实例
2008/06/15 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
2014最热门的JavaScript代码高亮插件推荐
2014/11/25 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
JavaScript从0开始构思表情插件
2016/07/26 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
2016/09/08 Javascript
URL中“#” “?” &“”号的作用浅析
2017/02/04 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
Vue+Koa2+mongoose写一个像素绘板的实现方法
2019/09/10 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
Python实现Logger打印功能的方法详解
2017/09/01 Python
python实现Flappy Bird源码
2018/12/24 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
美国和加拿大房车出售在线分类广告:RVT.com
2018/04/23 全球购物
校领导推荐信
2013/11/01 职场文书
户外拓展活动方案
2014/02/11 职场文书
个人委托书范本
2014/09/13 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
先进班组事迹材料
2014/12/25 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
房屋质量投诉书
2015/07/02 职场文书
Python first-order-model实现让照片动起来
2022/06/25 Python