数据预处理(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 ...
随机推荐
- auguements实参对象的数组化
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【es6】正则扩展
- Idea与Eclipse操作代码的快捷方式
1.Idea格式化代码的快捷键:ctrl+alt+L 2.在IDEA中创建了properties文件,发现默认中文不会自动进行unicode转码.如下 在project settings - File ...
- Django与前端的交互
在创建Django项目后,我们创建了一个App,我将这个App的名字命名为Cal,并在Cal这个文件夹下创建文件 templates. 创建templates文件夹以后,在项目settings.py文 ...
- 更改SQLServer实例默认字符集
转自http://www.cnblogs.com/fygh/archive/2012/05/15/2501598.html 需求 安装数据库时,将字符集安装成了“SQL_Latin1_General_ ...
- Linq to SharePoint与权限提升(转)
转自http://www.cnblogs.com/kaneboy/archive/2012/01/25/2437086.html SharePoint 2010支持Linq to SharePoint ...
- ViewPager(视图滑动切换工具)
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.Cons ...
- NET 知识体系结构
以下是我根据自身的情况来总结的ASP.NET 知识体系 ASP.NET 知识体系 1.语言C#——C#-知识梳理 2.ASP.NET 3.WinForm 4.ASP.NET MVC 5.EF
- C# List<T> 对于某个字段去重复
gradeSubjectItem.teacher = teacherInfos.Where((x, i) => teacherInfos.FindIndex(z => z.guid == ...
- [PHP] PHP的纯CPU基准测试(PHP5.5.9 vs PHP7.2.1)
PHP的纯CPU基准测试(PHP5.5.9 vs PHP7.2.1): 1.bench.php 可在PHP源代码的 php-src/Zend 目录 2.micro_bench.php 也可以在 PHP ...