Apache Spark机器学习.2.2 数据清洗

2.2 数据清洗


在本节中,我们将回顾一些Spark平台上的数据清洗方法,重点关注数据不完备性。然后,我们将讨论一些Spark数据清洗方面的特殊特征,以及一些基于Spark平台更加容易的数据清洗解决方案。

学习完本节,我们将能够完成数据清洗,并为机器学习准备好数据集。

2.2.1 处理数据不完备性

对于机器学习,数据越多越好。然而,通常数据越多,“脏数据”也会越多——这意味着会有更多的数据清洗工作。

数据质量控制可能会有许多问题需要处理,有些问题可能很简单,如数据输入错误或者数据复制。原则上,解决他们的方法是类似的——例如,利用数据逻辑来实现探索和获取项目的本质知识,利用分析逻辑来纠正他们。为此,在本节中,我们将重点关注缺失值处理,以便说明在这个主题上Spark的使用方法。数据清洗涵盖了数据的准确性、完整性、独特性、时效性和一致性。

虽然听起来可能很简单,但是处理缺失值和不完备性并不是一件容易的事情。它涉及许多问题,往往需要以下步骤:

1.计算数据缺失百分比。

这取决于研究项目,有些项目中的比例如果低于5%或10%,我们可能不需要在数据缺失问题上花费时间。

2.学习数据缺失的模式。

数据缺失有两种模式:完全随机或不随机。如果数据缺失是完全随机的,我们可以忽略这个问题。

3.确定解决数据缺失模式的方法。

处理数据缺失有几种常用的方法。均值填充,缺失数据删除,数据替换是最为主要的方法。

4.为数据缺失模式执行数据填补。

为了处理数据缺失和不完整性,数据科学家和机器学习从业者通常会利用他们熟悉的SQL工具或R语言编程。幸运的是,在Spark环境中,有Spark SQL和R notebook可以让用户继续使用他们熟悉的方法,为此,我们将在下面两节中进行详细阐述。

数据清洗也包含其他的问题,诸如处理数据输入错误和异常值。

2.2.2 在Spark中进行数据清洗

在上一节中,我们讨论了处理数据不完备性。

安装Spark后,我们可以很容易地在DataBricks Workspace中使用Spark SQL和R notebook处理上一节中所描述的数据清洗工作。

特别需要指出的是,sqlContext中的sql函数使得应用程序能够完成SQL查询编程,并返回一个DataFrame类型的结果。

例如,借助R notebook,我们可以用下面的语句来执行SQL命令,并把结果放到一个data.frame:

 

数据清洗是一个非常繁琐和耗时的工作,在本节,我们想请你关注SampleClean,对于机器学习从业者,它可以使数据清洗更为简单,特别是分布式数据清洗。

SampleClean是建立在AMPLab伯克利数据分析栈(BDAS)上的一个可扩展的数据清洗库。该库使用Apache Spark SQL 1.2.0及以上版本和Apache Hive来支持分布式数据清洗操作和相关的脏数据查询处理。 SampleClean可以执行一组可互换和可组合的、物理和逻辑的数据清洗操作,这使得我们可以快速地构建和调整数据清洗pipelines。

我们先在Spark和SampleClean中输入以下命令开启工作:

 

使用SampleClean,我们需要创建一个名为SampleCleanContext的对象,然后使用该上下文来管理工作会话中所有的信息,并提供API基元与数据进行交互。 SampleCleanContext由SparkContext对象构造而成,具体如下:

 

2.2.3 更简便的数据清洗

使用SampleClean和Spark,我们可以把数据清洗工作变得容易,可以编写更少的代码,并利用更少的数据。

总体而言,SampleClean采用了一个很好的策略。它采用异步方式以规避延迟,并使用采样来规避数据体量巨大的问题。此外,SampleClean在一个系统中结合了所有三个方面因素(算法、机器和人),因此变得更加高效。

更多使用SampleClean的信息,请访问:http://sampleclean.org/guide/ 和http://sampleclean.org/release.html。

为了更好地说明,让我们假设一个有四个数据表的机器学习项目:

 

要清洗这个数据集,我们需要:

无论是使用SQL还是R语言命令,都要计算每个变量有多少个缺失值。

如果我们选择的策略是均值填充,那么用平均值填补缺失值。

尽管上述工作很容易实现,但是在数据体量巨大的情况下,这样做有可能非常耗时。因此,为了提高效率,我们可能需要将数据分割成许多子集,同时并行完成前面的步骤,Spark是完成此项工作的最佳计算平台。

在Databricks R notebook环境中,我们可以先用R语言命令sum(is.na(x))创建notebook来计算数据缺失的情况。

为了用平均值替代缺失值,我们可以使用下面的代码:

 

在Spark中,我们可以轻松地对所有的数据集群使用R notebook。

时间: 2024-10-14 19:43:25

Apache Spark机器学习.2.2 数据清洗的相关文章

《 Apache Spark机器学习.》导读

本节书摘来自华章出版社< Apache Spark机器学习.>一书中作者[美] 刘永川(Alex Liu) 著 闫龙川 高德荃 李君婷 译  前 言 作为数据科学家和机器学习专业人员,我们的工作是建立模型进行欺诈检测.预测客户流失,或者在广泛的领域将数据转换为洞见.为此,我们有时需要处理大量的数据和复杂的计算.因此,我们一直对新的计算工具满怀期待,例如Spark,我们花费了很多时间来学习新工具.有很多可用的资料来学习这些新的工具,但这些资料大多都由计算机科学家编写,更多的是从计算角度来描述.

Apache Spark机器学习.2.1 访问和加载数据集

摘要 Spark机器学习的数据准备 机器学习从业者和数据科学家时常耗费70%或80%的时间为机器学习项目准备数据.数据准备可能是很艰辛的工作,但是它影响到接下来的各方面工作,因此是非常必要和极其重要的.所以,在本章中,我们将讨论机器学习中所有必要的数据准备方面的内容,通常包括数据获取.数据清洗.数据集连接,再到特征开发,从而让我们为基于Spark平台构建机器学习模型准备好数据集.具体而言,我们将讨论前面提到的以下6个数据准备任务,然后在针对复用性和自动化的讨论中结束本章: 访问和加载数据集 开放

Apache Spark机器学习2.7 复用性和自动化

2.7 复用性和自动化 本节我们将讨论数据集组织方法.预处理工作流方法,然后使用Apache Spark pipeline模型进行表示,并实现工作流.然后,我们将评估数据预处理的自动化解决方案. 学完本节,我们应能够使用Spark pipeline模型来表示和实现数据集预处理工作流,理解一些基于Apache Spark的自动化解决方案. 2.7.1 数据集预处理工作流 数据准备工作是从数据清洗到标识匹配,再由数据重组到特征提取,能以某种形式进行组织,反映了一步一步开展机器学习数据集准备的有序过程

Apache Spark机器学习.2.4 数据集重组

2.4 数据集重组 本节,我们介绍数据集重组技术.我们将讨论一些特殊的Spark数据重组特征,以及一些可以用在Spark notebook中基于R语言数据重组的特别方法. 学习完本节,我们可以根据不同的机器学习需要进行数据集重组. 2.4.1 数据集重组任务 数据集重组虽然听起来比较容易,但还是很有挑战,并且非常耗时. 有两个常见的数据重组任务:一是,获取一个用于建模的数据子集:二是,以更高的层次汇总数据.例如,我们有学生数据,但是我们需要一些班级层面的数据集.为此,我们需要计算学生的一些属性,

Apache Spark机器学习.1.4 MLlib

1.4 MLlib MLlib是一个可扩展的Spark机器学习库,包括很多常用的机器学习算法.MLlib内置的算法如下: 以向量和矩阵形式处理数据 基本的统计计算,例如:汇总统计和相关性.简单随机数生成.分层抽样.执行简单的假设检验 分类和回归建模 协同过滤 聚类 降维 特征提取与转换 频繁模式挖掘 开发优化 PMML模型导出 Spark MLlib还处在活跃开发阶段,预计每次新版发布都会有新的算法加入其中. MLlib符合Apache Spark的计算哲学,简单易用,性能卓越. MLlib使用

Apache Spark机器学习.1.5 Spark RDD和DataFrame

1.5 Spark RDD和DataFrame 本节关注数据以及Spark如何表示和组织数据.我们将介绍Spark RDD和DataFrame技术. 通过本节的学习,读者将掌握Spark的两个关键概念:RDD和DataFrame,并将它们应用于机器学习项目. 1.5.1 Spark RDD Spark主要以一种分布式项集合的形式进行数据抽象,称之为弹性分布式数据集(Resilient Distributed Dataset,RDD).RDD是Spark的关键创新,使其比其他框架计算更加快速和高效

Apache Spark机器学习.1.1 Spark概述和技术优势

摘要 Spark机器学习简介 本章从机器学习和数据分析视角介绍Apache Spark,并讨论Spark中的机器学习计算处理技术.本章首先概括介绍Apache Spark,通过与MapReduce等计算平台进行比较,展示Spark在数据分析中的技术优势和特点.接着,讨论如下五个方面的内容: 机器学习算法与程序库 Spark RDD和DataFrame 机器学习框架 Spark pipeline技术 Spark notebook技术 以上是数据科学家或机器学习专业人员必须掌握的五项最重要的技术内容

Apache Spark机器学习.1.8 Spark notebook简介

1.8 Spark notebook简介 在本节中,我们首先讨论有关面向机器学习的notebook方法.然后,我们介绍R Markdown,以其作为一个成熟的notebook案例,最后介绍Spark中的R notebook. 学习完本节,读者将掌握notebook相关的方法和概念,并为将其用于管理和开发机器学习项目做好准备. 1.8.1 面向机器学习的notebook方法 notebook已经成为众人青睐的机器学习工具,因为该工具既能动态驱动,还具备可重复生成的特点. 大部分notebook接口

Apache Spark机器学习.1.7 机器学习工作流示例

1.7 机器学习工作流示例 为了进一步了解学习机器学习的工作流,在这里让我们学习一些例子. 本书后续章节会研究风险建模.欺诈检测.客户视图.流失预测和产品推荐.对于诸如此类的项目,目标往往是确定某些问题的原因,或者建立一个因果模型.下面是使用工作流建立一个因果模型的一个例子. 1.检查数据结构,以确保更好地理解数据: 数据是横截面数据吗?是隐含着时间信息的合并数据吗? 是否使用了分类变量? 2.检查缺失值: 不知道或者忘记了一个答案可能会被记录为一个中立或特殊的类别 一些变量可能有很多缺失值 根