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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杂七杂八

numpy中random模块使用

在python数据分析的学习和应用过程中,经常需要用到numpy的随机函数,下面我们学习一下具体的使用,本文着重说明各个分布随机数的生成。 numpy.rand...

3235
来自专栏https://www.cnblogs.com/L

【TensorFlow篇】--Tensorflow框架实现SoftMax模型识别手写数字集

本文讲述用Tensorflow框架实现SoftMax模型识别手写数字集,来实现多分类。

801
来自专栏人工智能LeadAI

谈谈Tensorflow的Batch Normalization

tensorflow中关于BN(Batch Normalization)的函数主要有两个,分别是: tf.nn.moments tf.nn.batch_norm...

4237
来自专栏机器学习养成记

关联分析(3):Apriori R语言实现

我们对UCI机器学习库上下载的美国众议院议员投票记录数据,进行关联分析。在R中,可以直接调用arules包中的apriori()函数训练模型。

842
来自专栏AILearning

【Scikit-Learn 中文文档】使用 scikit-learn 介绍机器学习 | ApacheCN

使用 scikit-learn 介绍机器学习 | ApacheCN 内容提要 在本节中,我们介绍一些在使用 scikit-learn 过程中用到的 机器...

2749
来自专栏机器学习从入门到成神

数据库中关系代数中的关系运算

这个概念的描述的非常抽象,刚开始学习的同学完全不知所云。这里通过一个实例来说明除法运算的求解过程:

1752
来自专栏Petrichor的专栏

Tensor

  在 TensorFlow 中用 tensor 数据结构来代表所有的数据, 计算图中, 操作间传递的数据都是 tensor。

682
来自专栏企鹅号快讯

无人驾驶系列——深度学习笔记:Tensorflow基本概念

随着无人驾驶的火爆,深度学习在无人驾驶中的应用受到广泛关注,我在工作中对此有所接触,因此进行了相关学习和整理,给大家大家可以参考。 ? TensorFlow深度...

2176
来自专栏码云1024

Numpy 运算

最简单的数值计算时数组和标量进行计算,计算过程是直接把数组里的元素和标量逐个进行计算:

33816
来自专栏YoungGy

机器为什么可以学习

机器学习、人工智能炙手可热,但是机器到底为什么可以学习呢?本文将从霍夫丁不等式讲到VC维,探究机器学习的原因所在。 机器怎么可能学习 机器确实可能会学习 机器为...

1975

扫码关注云+社区