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抓取模板之家的CSS模板
Mar 16 Python
python回调函数用法实例分析
May 09 Python
Python字符串替换实例分析
May 11 Python
详解Swift中属性的声明与作用
Jun 30 Python
简述:我为什么选择Python而不是Matlab和R语言
Nov 14 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
浅谈Django中view对数据库的调用方法
Jul 18 Python
pip安装python库的方法总结
Aug 02 Python
python 一维二维插值实例
Apr 22 Python
Pycharm修改python路径过程图解
May 22 Python
python开发一个解析protobuf文件的简单编译器
Nov 17 Python
基于注解实现 SpringBoot 接口防刷的方法
Mar 02 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中使用XML
2006/10/09 PHP
初级的用php写的采集程序
2007/03/16 PHP
PHP中常用数组处理方法实例分析
2008/08/30 PHP
PHP实时显示输出
2008/10/02 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
laravel 5 实现模板主题功能
2015/03/02 PHP
PHP定时执行任务的3种方法详解
2015/12/21 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
js如何找出字符串中的最长回文串
2018/06/04 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
python开发之thread实现布朗运动的方法
2015/11/11 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
2019/03/18 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
python实现快递价格查询系统
2020/03/03 Python
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
安全教育实施方案
2014/03/02 职场文书
股份转让协议书
2014/04/12 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS