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

2.4 数据集重组


本节,我们介绍数据集重组技术。我们将讨论一些特殊的Spark数据重组特征,以及一些可以用在Spark notebook中基于R语言数据重组的特别方法。

学习完本节,我们可以根据不同的机器学习需要进行数据集重组。

2.4.1 数据集重组任务

数据集重组虽然听起来比较容易,但还是很有挑战,并且非常耗时。

有两个常见的数据重组任务:一是,获取一个用于建模的数据子集;二是,以更高的层次汇总数据。例如,我们有学生数据,但是我们需要一些班级层面的数据集。为此,我们需要计算学生的一些属性,然后重组为新的数据。

处理数据重组,数据科学家和机器学习从业者经常使用他们熟悉的SQL和R语言编程工具。幸运的是,在Spark环境中,Spark SQL和R notebook能够让用户沿用他们熟悉的方式。我们将在下面两节中详细说明。

总体来讲,我们推荐使用SparkSQL进行数据集重组。然而,出于学习的需要,本节我们主要集中在Databricks环境中R notebook的使用。

在统计和数据科学方面,R语言和Spark在几个重要的应用场景都能很好地互补。默认情况下,Databricks的R notebook包括SparkR程序包,因此数据科学家可以轻松地受益于Spark在R语言分析方面的强大能力。除了SparkR,notebook可以方便地安装任何R语言的程序包。这里,我们将强调R notebook的几个特征。

 

为了在Databricks中使用R语言,在创建notebook时选择R语言作为编程语言。因为SparkR是Spark中新增加的特征,你需要记住将R notebook与1.4及以上版本的Spark集群关联。SparkR程序包是默认导入和配置的,你可以在R语言中执行Spark查询。

2.4.2 使用Spark SQL进行数据集重组

在上一节,我们讨论了使用SparkSQL进行数据集重组。

对于机器学习从业者,SQL是一个执行复杂数据汇集的有力工具,并有很多熟悉的例子。

SELECT是一个获取数据子集的命令。

对于数据汇集,机器学习从业者可以使用SparkSQL的sample.aggregate或窗口函数。

更多关于 SparkSQL的各种合并函数,请访问:https://spark.apache.org/docs/ 1.4.0/api/scala/index.html#org.apache.spark.sql.functions$。

更多关于 SparkSQL的窗口函数,请访问:https://databricks.com/blog/2015/ 07/15/ introducing-window-functions-in-spark-sql.html。

2.4.3 在Spark上使用R语言进行数据集重组

R语言有一个子集命令,通过下面的格式创建子集:

 

此外,我们也可以使用R语言的aggregate命令,如下所示:

 

然而,数据一般拥有多个层次的分组(嵌套处理、分割图设计,或重复测量),需要在多个层次上进行研究。例如,通过长期的临床研究,我们对次数、时间、病人与医疗的关系感兴趣。这些数据的存储和采集是按照简单和准确收集的方式进行优化,而不是按照你所需要的统计分析进行组合,这给你的分析工作带来更多困难。你需要流畅地重构这些数据以满足你的需要,但是很多软件包都无法完成这项任务,我们需要为每个新的实例编写新的代码。

尤其是R语言有一个主要用于数据重组的程序包reshape。reshape程序包使用一个融合和构造范例,这里,数据汇合成一个能够区分测量和识别变量形式, 然后将它“转换”到一个新的形状,它可能是一个DataFrame、列表或高维数组。

我们回顾一下2.2.3节,有4个表格进行数据分析。

 

在这个例子中,我们经常需要从第一个数据中获得一个子集,并与第4个数据合并。

时间: 2024-07-28 18:52:37

Apache Spark机器学习.2.4 数据集重组的相关文章

《 Apache Spark机器学习.》导读

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

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

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

Apache Spark机器学习.2.5 数据集连接

2.5 数据集连接 本节,我们将介绍数据连接的技术,并讨论Spark处理数据连接的特有的特征,以及一些使工作更容易进行的数据连接解决方案. 学习完本节,我们将有能力按照各类机器学习需要做数据连接. 2.5.1 数据连接及其工具--Spark SQL 为机器学习项目准备数据集时,我们一般需要组合多个数据集.关系表通过主键和外键进行连接. 连接两个及以上的数据集听起来容易,但做起来非常有挑战,并且非常耗时.在SQL语句中,SELECT是最常用的命令.作为例子,下面是一个执行连接的典型的SQL代码:

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

2.7 复用性和自动化 本节我们将讨论数据集组织方法.预处理工作流方法,然后使用Apache Spark pipeline模型进行表示,并实现工作流.然后,我们将评估数据预处理的自动化解决方案. 学完本节,我们应能够使用Spark pipeline模型来表示和实现数据集预处理工作流,理解一些基于Apache Spark的自动化解决方案. 2.7.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.检查缺失值: 不知道或者忘记了一个答案可能会被记录为一个中立或特殊的类别 一些变量可能有很多缺失值 根