抱歉,你查看的文章不存在

Python AI极简入门3:数据预处理

一、数据预处理的重要性

在机器学习中,数据的准确性关乎着机器学习任务的成败、直接影响着预测测的结果。

而数据的准确性,一方面指数据的完整度,用于机器学习预测的数据是否全面;另一方面则指数据的统一度,数据与数据之间的分布是否统一。

二、在Python中进行数据预处理

对数据进行预处理的方式有很多中,比如规范化、标准化、二值化、编码分类等等。我们可以通过sklearn模块的preprocessing子模块对数据进行预处理,其中包含了各种数据预处理的集成函数:

假如,我们有一组数据:

每一行特征数据的数值都相差比较大,比如第一行最大值为3.5,最小值为-6,相差为9.5;第二行最大值为4,最小值为-0.3,相差为4.3。

将其转化为数组可以直观地看出来:

下面,我们一一介绍各种数据预处理方法以及在Python中的实现方法:

标准化处理

对数据集进行标准化处理是很多许多机器学习估计器的通用要求 ,因为如果单个特征看起来不像标准正态分布数据那么它们可能会表现得很差。

来看看实际的例子:

我们调用preprocessing模块的StandardScaler()方法,对data数组进行标准化缩放,结果返回了一个数值差异比原始数组小多了的数组。

将值缩放到0-1之间

还有一种标准化方法MinMaxScaler()能够将数值缩放到0到1之间,更好的约束的数组特征:

可以发现,data数组中所有的值都化为了0到1之间的数据。

数据正常化

数据的正常化处理(Normalization)则是将个体样本数值缩放为单位标准。 我们可以在preprocessing中的Normalizer()方法进行调用,下面看实际的处理效果:

数据二值化

前面介绍的数据预处理方法都是对数据进行缩放,除了对数据进行缩放之外,我们还可以对数据进行二值化处理,将不同的数据全部处理为0或1这两个数值。

下面看看实际的效果:

对比一下原始的数据:

似乎其将小于0的数据都处理为了0,大于1的数据都处理为了1。我们可以对其指定threshold参数来设置二值化的阀值,下面请看:

可以发现,默认情况下被处理为1的一些数据(比如1),已经被处理为了0。

处理分类编码

除了上述示例中的数值数据,我们在实际的数据处理过程中还会遇到数据为分类字符串的情况,比如下面这种情况:

这样的字符串数据既不能转换为数据,也无从缩放。不过这种数据多是用于表示分类的,我们可以使用编码分类特征来对这类数据进行预处理。

在sklearn中,对应的处理方法为preprocessing.LabelEncoder(),下面我们看一个实际的演示:

可以发现,我们的四个城市名称字符串被编码为了值为1、0、2、3的数组。那么如果取回之前的字符串数据呢,可以使用classes_属性进行取回:

同时还能根据编码后的数字,来获取到真实的分类字符串:

处理缺失值

在实际的数据集中,还经常会出现有缺失值的情况,其中有一些缺失值表示为None,有一个则是表示为一个空字符串"",面对这种情况,我们可以将有缺失值的行数删除,但是如果数据量大的话,可能会影响到机器学习模型的准确性。一个比较好的方法是填充这些缺失值。

处理缺失值在pandas模块中就有很成熟的方法来实现,比如fillna()方法。

我们在data中新增一列空值:

再使用fillna()方法,对空值进行填充:

这样就完成了缺失值的填充了。

更多

除了上述介绍的sklearn的数据预处理方法,还有很多没有提及到,在sklearn的官方文档中,大家可以详细去了解:

三、下一篇

在了解了数据预处理的几种基本方法后,下一篇我们将介绍创建一个机器学习回归模型。

原文发布于微信公众号 - 州的先生(zmister2016)

原文发表时间:2018-03-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

州的先生

4 篇文章54 人订阅

相关文章

来自专栏信数据得永生

《Scikit-Learn与TensorFlow机器学习实用指南》第15章 自编码器

4107
来自专栏风口上的猪的文章

机器学习(1) - TensorflowSharp 简单使用与KNN识别MNIST流程

机器学习是时下非常流行的话题,而Tensorflow是机器学习中最有名的工具包。TensorflowSharp是Tensorflow的C#语言表述。本文会对Te...

1693
来自专栏悦思悦读

【文本分析】怎样把文档转换成向量

文本分析 文本分析指从文本中抽取出的特征来量化来表示文本信息,并在此基础上对其进行基于数学模型的处理。它是文本挖掘、信息检索的一个基本问题。 在“大数据”盛行的...

58311
来自专栏机器之心

教程 | 从字符级的语言建模开始,了解语言模型与序列建模的基本概念

选自imaddabbura 机器之心编译 你有没有想过 Gmail 自动回复是如何进行的?或者手机在你输入文本时如何对下一个词提出建议?生成文本序列的通常方式是...

4055
来自专栏机器之心

基于注意力机制,机器之心带你理解与训练神经机器翻译系统

6908
来自专栏机器学习算法工程师

简单易懂的自动编码器

作者:叶虎 编辑:田旭 引言 自动编码器是一种无监督的神经网络模型,它可以学习到输入数据的隐含特征,这称为编码(coding),同时用学习到的新特征可以重构出原...

5066
来自专栏SeanCheney的专栏

《Scikit-Learn与TensorFlow机器学习实用指南》 第15章 自编码器

自编码器是能够在无监督的情况下学习输入数据的有效表示(叫做编码)的人工神经网络(即,训练集是未标记)。这些编码通常具有比输入数据低得多的维度,使得自编码器对降维...

1433
来自专栏AI研习社

如何把时间序列问题转化为监督学习问题?通俗易懂的 Python 教程

AI 研习社按:本文作者 Jason Brownlee 为澳大利亚知名机器学习专家,对时间序列预测尤有心得。原文发布于其博客。AI 研习社编译。 ? Jaso...

3417
来自专栏文武兼修ing——机器学习与IC设计

PyTorch60分钟教程学习笔记基本概念网络构建分类网络搭建,训练与测试

基本概念 Tensor tensor是的含义是张量,简单的理解可以将其当成三维矩阵,pytorch中的张量是对数据的一种封装,也是数据结构中最核心的部分之一。对...

4186
来自专栏奇点大数据

扔掉代码表!用RNN“破解”摩斯电码

作者:Sandeep Bhupatiraju 剧透警告:摩斯电码并不需要破解。它很有用,因为消息可以使用这些代码以最少的设备发送,并且我说它不需要破解,因为代码...

4405

扫码关注云+社区

领取腾讯云代金券