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基于tkinter模块实现的改名小工具示例
Jul 27 Python
Python Pickle 实现在同一个文件中序列化多个对象
Dec 30 Python
Python文件操作方法详解
Feb 09 Python
Django choices下拉列表绑定实例
Mar 13 Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
Apr 16 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
Jun 15 Python
python连接mysql有哪些方法
Jun 24 Python
Django+Uwsgi+Nginx如何实现生产环境部署
Jul 31 Python
实例代码讲解Python 线程池
Aug 24 Python
Python脚本调试工具安装过程
Jan 11 Python
Python必备技巧之函数的使用详解
Apr 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
Session的工作方式
2006/10/09 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
2012/02/21 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
jQuery实现的简单百分比进度条效果示例
2016/08/01 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
详解vue-router基本使用
2017/04/18 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
python使用心得之获得github代码库列表
2014/06/25 Python
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
新手如何快速入门Python(菜鸟必看篇)
2017/06/10 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
关于Python的一些学习总结
2018/05/25 Python
python mac下安装虚拟环境的图文教程
2019/04/12 Python
python二维键值数组生成转json的例子
2019/12/06 Python
从零实现一个自定义html5播放器的示例代码
2017/08/01 HTML / CSS
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
几个Linux面试题笔试题
2012/12/01 面试题
安全检查与奖惩制度
2014/01/23 职场文书
报社实习生自荐信
2014/01/24 职场文书
小区停车场管理制度
2014/01/27 职场文书
便利店促销方案
2014/02/20 职场文书
小学生民族团结演讲稿
2014/08/27 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android
VUE之图片Base64编码使用ElementUI组件上传
2022/04/09 Vue.js