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中dict与set的使用
Aug 10 Python
浅析Python中signal包的使用
Nov 13 Python
教你用Type Hint提高Python程序开发效率
Aug 08 Python
python实现壁纸批量下载代码实例
Jan 25 Python
Python使用Django实现博客系统完整版
Sep 29 Python
python自动重试第三方包retrying模块的方法
Apr 24 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
Python Pandas分组聚合的实现方法
Jul 02 Python
python实现图片压缩代码实例
Aug 12 Python
tensorflow 变长序列存储实例
Jan 20 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
Python编写单元测试代码实例
Sep 10 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中strlen 函数
2016/02/27 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
orm获取关联表里的属性值
2016/04/17 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
Laravel 5+ .env环境配置文件详解
2020/04/06 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
xheditor与validate插件冲突的解决方案
2010/04/15 Javascript
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
Jquery异步上传文件代码实例
2019/11/13 jQuery
JS实现网站吸顶条
2020/01/08 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
Python3.6简单操作Mysql数据库
2017/09/12 Python
使用PyCharm创建Django项目及基本配置详解
2018/10/24 Python
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
Python 串口读写的实现方法
2019/06/12 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
优秀安全员事迹材料
2014/05/11 职场文书
租房安全协议书
2014/08/20 职场文书
农村党员干部承诺书
2015/05/04 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
导游词之山西-五老峰
2019/10/07 职场文书
室外天线与收音机天线杆接合方法
2022/04/05 无线电
2022新作动画《福星小子》释出宣传影片 加入内田真礼&宫野真守配音演出
2022/04/08 日漫