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实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
Jun 27 Python
python函数的万能参数传参详解
Jul 26 Python
pandas 如何分割字符的实现方法
Jul 29 Python
FFrpc python客户端lib使用解析
Aug 24 Python
python中open函数的基本用法示例
Sep 07 Python
深入浅析Python科学计算库Scipy及安装步骤
Oct 12 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
Feb 26 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
Jun 02 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 Python
python实现socket简单通信的示例代码
Apr 13 Python
Python turtle编写简单的球类小游戏
Mar 31 Python
Python OpenCV形态学运算示例详解
Apr 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 exif扩展方法开启详解
2014/07/28 PHP
Javascript中eval函数的使用方法与示例
2007/04/09 Javascript
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
bootstrap模态框消失问题的解决方法
2016/12/02 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
[02:06]DOTA2肉山黑名单魔法终结者 敌法师中文配音鉴赏
2013/06/17 DOTA
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
redis之django-redis的简单缓存使用
2018/06/07 Python
python 图像平移和旋转的实例
2019/01/10 Python
python学生管理系统
2019/01/30 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
唤醒头发毛囊的秘密武器:Grow Gorgeous
2016/08/28 全球购物
英国袜子店:Sock Shop
2017/01/11 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
Java语言程序设计测试题判断题部分
2013/01/06 面试题
酒店应聘自荐信
2013/11/09 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
创先争优演讲稿
2014/09/15 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
Java 超详细讲解hashCode方法
2022/04/07 Java/Android