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采用requests库模拟登录和抓取数据的简单示例
Jul 05 Python
python中使用urllib2伪造HTTP报头的2个方法
Jul 07 Python
以一段代码为实例快速入门Python2.7
Mar 31 Python
Python文档生成工具pydoc使用介绍
Jun 02 Python
Python实现的选择排序算法原理与用法实例分析
Nov 22 Python
pandas系列之DataFrame 行列数据筛选实例
Apr 12 Python
Python生成器generator用法示例
Aug 10 Python
Flask框架工厂函数用法实例分析
May 25 Python
简单了解django orm中介模型
Jul 30 Python
利用Python小工具实现3秒钟将视频转换为音频
Oct 29 Python
pytorch模型存储的2种实现方法
Feb 14 Python
解决Python安装cryptography报错问题
Sep 03 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
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
ThinkPHP3.1新特性之Action参数绑定
2014/06/19 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
关于this和self的使用说明
2010/08/01 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
详解react组件通讯方式(多种)
2020/05/06 Javascript
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
django创建简单的页面响应实例教程
2019/09/06 Python
python使用正则表达式(Regular Expression)方法超详细
2019/12/30 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
英文自荐信格式
2013/11/28 职场文书
模具数控专业自荐信
2014/01/27 职场文书
大学军训感言1500字
2014/03/09 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
同学聚会策划方案
2014/06/06 职场文书
房贷工资证明范本
2015/06/12 职场文书
2016孝老爱亲模范事迹材料
2016/02/26 职场文书
导游词之日本富士山
2020/01/06 职场文书
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
Python写情书? 10行代码展示如何把情书写在她的照片里
2022/04/21 Python
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js