数据预处理(Python scikit-learn)
在机器学习任务中,经常会对数据进行预处理.如尺度变换,标准化,二值化,正规化.至于采用哪种方法更有效,则与数据分布和采用算法有关.不同算法对数据的假设不同,可能需要不同的变换,而且有时无需进行变换,也可能得到相对更好的效果.因此推荐使用多种数据变换方式,用多个不同算法学习和测试,选择相对较好的变换方式和算法.
下面对在 Python scikit-learn 库(也称 sklearn 库)中的预处理过程进行介绍:
1. 加载数据集; 2. 将数据集分为用于机器学习的输入变量和输出变量; 3. 对输入变量进行变换(或预处理); 4. 显示变换结果(可选).
本文采用 scikit-learn 库自带的鸢尾花数据集(Iris Plants Database)作为示例.
首先,加载数据集,获取输入变量 X 和输出变量 y ,示例代码如下:
from sklearn import datasets
import numpy as np data = datasets.load_iris()
X, y = data.data, data.target np.set_printoptions(precision=3)
print ("\n" "Preprocess input variables: " "\n")
print ("Raw Data: ")
print (X[:5, :])
然后,变换输入变量 X (类型为 <type 'numpy.ndarray'>),具体变换如下:
尺度变换
将输入变量变换到某一范围,如 0 ~ 1 区间.在 sklearn 库中,使用 MinMaxScaler 类实现.常用于类似梯度下降的优化算法,回归和神经网络中的加权输入,以及类似 K 近邻的距离度量.示例代码如下:
from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler(feature_range=(0,1))
rescaledX = scaler.fit_transform(X) # Print transformed data
print ("\nRescaled Data: ")
print(rescaledX[0:5,:])
标准化
通常适用于高斯分布的输入变量.具体来说,将输入变量中的每个属性值减去其平均值,然后除以标准差,得到标准正态分布的属性值.在 sklearn库中,使用 StandardScaler 类实现.常用于假定输入变量高斯分布的线性回归,Logistic回归和线性判决分析.
from sklearn.preprocessing import StandardScaler scaler = StandardScaler().fit(X)
standardizedX = scaler.transform(X)
print ("\nStandardized Data: ")
print (standardizedX[0:5,:])
正规化
将输入变量变换为具有单位范数长度的数据.常用的范数有L1,L2,详见我之前的博文 "数据正规化 (data normalization) 的原理及实现 (Python sklearn)". 在 sklearn 库中,使用 Normalizer 类实现.常用于含有许多 0 的稀疏数据集,像神经网络的采用加权输入的算法和像 K 近邻采用距离度量的算法.
from sklearn.preprocessing import Normalizer scaler = Normalizer().fit(X)
normalizedX = scaler.transform(X) print ("\nNormalized Data: ")
print (normalizedX[0:5,:])
二值化
使用门限值,将输入数据二值化.当输入变量值大于门限值时,变换为 1;当输入变量值小于或等于门限值时,变换为 0.在 sklearn 库中,使用 Binarizer 类实现.常用于获取清晰的值的概率,产生新的有意义的属性的特征工程.
from sklearn.preprocessing import Binarizer binarizer = Binarizer(threshold=0.0).fit(X)
binaryX = binarizer.transform(X) print ("\nBinarized Data: ")
print (binaryX[0:5,:])
参考资料
Jason Brownlee. How To Prepare Your Data For Machine Learning in Python with Scikit-Learn.
https://machinelearningmastery.com/prepare-data-machine-learning-python-scikit-learn/
数据预处理(Python scikit-learn)的更多相关文章
- 数据预处理 | python 第三方库 imblearn 处理样本分布不均衡问题
说明:目前 只记录了 过采样 和 欠采样 的代码部分 1 样本分布不均衡描述: 主要出现在与分类相关的建模问题上,不均衡指的是不同类别的样本量差异非常大. 样本量差距过大会影响到建模结果 2 出现的场 ...
- scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类 (python代码)
scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import ...
- Scikit Learn: 在python中机器学习
转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...
- python data analysis | python数据预处理(基于scikit-learn模块)
原文:http://www.jianshu.com/p/94516a58314d Dataset transformations| 数据转换 Combining estimators|组合学习器 Fe ...
- [Python数据挖掘]第4章、数据预处理
数据预处理主要包括数据清洗.数据集成.数据变换和数据规约,处理过程如图所示. 一.数据清洗 1.缺失值处理:删除.插补.不处理 ## 拉格朗日插值代码(使用缺失值前后各5个未缺失的数据建模) impo ...
- Python数据预处理:机器学习、人工智能通用技术(1)
Python数据预处理:机器学习.人工智能通用技术 白宁超 2018年12月24日17:28:26 摘要:大数据技术与我们日常生活越来越紧密,要做大数据,首要解决数据问题.原始数据存在大量不完整.不 ...
- python中常用的九种数据预处理方法分享
Spyder Ctrl + 4/5: 块注释/块反注释 本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(St ...
- 2 python大数据挖掘系列之淘宝商城数据预处理实战
preface 在上一章节我们聊了python大数据分析的基本模块,下面就说说2个项目吧,第一个是进行淘宝商品数据的挖掘,第二个是进行文本相似度匹配.好了,废话不多说,赶紧上车. 淘宝商品数据挖掘 数 ...
- Python数据挖掘——数据预处理
Python数据挖掘——数据预处理 数据预处理 数据质量 准确性.完整性.一致性.时效性.可信性.可解释性 数据预处理的主要任务 数据清理 数据集成 数据归约 维归约 数值归约 数据变换 规范化 数据 ...
- Python的工具包[1] -> pandas数据预处理 -> pandas 库及使用总结
pandas数据预处理 / pandas data pre-processing 目录 关于 pandas pandas 库 pandas 基本操作 pandas 计算 pandas 的 Series ...
随机推荐
- 求幂大法,矩阵快速幂,快速幂模板题--hdu4549
hdu-4549 求幂大法.矩阵快速幂.快速幂 题目 M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 ...
- (转)Linux下部署tomcat及tomcat war包应用程序
原文:http://www.cnblogs.com/smallfa/news/2017/07/17/7193620.html 1, 通过winscp将tomcat包(6和7版本都是一样的安装方法)和j ...
- 虹软人脸识别在 linux中so文件加载不到的问题
其实是可以加载到的,不过是so文件放的位置不一对,最简单的方式是放在 /usr/lib64 目录下,也可自己设置. so文件加载不到会报这个错误: .lang.UnsatisfiedLinkEr ...
- 航空公司客户价值分析(KMeans聚类)
PS.图片可能不清楚,代码 数据集都在 https://github.com/xubin97/Data-Mining_exp1 项目介绍: 本案例的目标是客户价值识别,通过航空公司客户数据识别不同价值 ...
- Ubuntu 16.04安装测试MQTT Mosquitto
环境:Ubuntu 16.04 介绍MQTT MQTT是一种机器到机器的消息传递协议,旨在为“物联网”设备提供轻量级的发布/订阅通信.它通常用于地理跟踪车队,家庭自动化,环境传感器网络和公用事业规模数 ...
- ant使用小结
使用builder.xml的方式:完成的工作:打jar包并运行,其中引用了第三方jar和配置文件: <?xml version="1.0" encoding="UT ...
- RocketMQ异常
rocketMQ下载下来的时候,bin目录下有mqbroker.exe和mqnamesrv.exe两个可执行文件,双击执行都可以成功启动:
- SQL Server中的小技巧(重复、替换、截取、去空格、去小数点后的位数)
PS:随笔写的在SQL Server中要用到的 (重复.替换.截取.去空格.去小数点后的位数) /*---------------------------重复--------------------- ...
- 浏览器获取正确的scrollTop值
window.pageYOffset 被所有浏览器支持除了 IE 6, IE 7, IE 8, 不关doctype的事, 注IE9 开始支持此属性. window.scrollY 被Firefox, ...
- 使用重绘项美化WinForm中的控件
如果你觉得项目中的ComboBox.ListBox或其它的Winforms控件不能满足你的显示要求,包括窗体在内很多控件都支持重绘修改显示样式.下面的示例完成对ComBox数据项的重绘,希望能起到抛砖 ...