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进阶教程之循环对象
Aug 30 Python
pymongo实现控制mongodb中数字字段做加法的方法
Mar 26 Python
使用Python编写类UNIX系统的命令行工具的教程
Apr 15 Python
python 实现上传图片并预览的3种方法(推荐)
Jul 14 Python
python中模块的__all__属性详解
Oct 26 Python
20个常用Python运维库和模块
Feb 12 Python
Flask框架信号用法实例分析
Jul 24 Python
python科学计算之scipy——optimize用法
Nov 25 Python
Python实现爬取并分析电商评论
Jun 19 Python
Python  Asyncio模块实现的生产消费者模型的方法
Mar 01 Python
python3 删除所有自定义变量的操作
Apr 08 Python
Django实现翻页的示例代码
May 24 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
一个基于PDO的数据库操作类
2011/03/24 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
PHP二维关联数组的遍历方式(实例讲解)
2017/10/18 PHP
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
jQuery搜索同辈元素方法
2015/02/10 Javascript
javascript实现二级级联菜单的简单制作
2015/11/19 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
vue 请求后台数据的实例代码
2017/06/22 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
Python中List.index()方法的使用教程
2015/05/20 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
Python Subprocess模块原理及实例
2019/08/26 Python
python同步两个文件夹下的内容
2019/08/29 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
python 代码运行时间获取方式详解
2020/09/18 Python
如何利用python发送邮件
2020/09/26 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
医药工作者的求职信范文
2013/09/21 职场文书
策划创业计划书
2014/02/06 职场文书
联欢晚会主持词
2014/03/25 职场文书
施工安全承诺书
2014/05/22 职场文书
网络营销策划方案
2014/06/04 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
springboot+VUE实现登录注册
2021/05/27 Vue.js
Oracle中日期的使用方法实例
2022/07/07 Oracle