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

简介:

摘要

Spark机器学习的数据准备

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

访问和加载数据集

开放可用的机器学习数据集

将数据集加载到Spark

使用Spark进行数据探索和可视化

数据清洗

处理数据缺失与不完整

基于Spark的数据清洗

数据清洗变得容易

一致性匹配

处理一致性问题

基于Spark的数据匹配

获得更好的数据匹配效果

数据重组

数据重组任务

基于Spark的数据重组

数据重组变得容易

数据连接

Spark SQL数据集连接

使用Spark SQL进行数据连接

数据连接变得容易

特征提取

特征提取的挑战

基于Spark的特征提取

特征提取变得容易

复用性和自动化

数据集预处理工作流

Spark pipelines预处理

数据集预处理自动化


2.1 访问和加载数据集


在本节,我们将回顾一些公开可用的数据集,并且讨论加载这些数据集到Spark的方法。然后,我们将回顾九种Spark上探索和可视化数据集的方法。

学习完本节,我们能够获取一些可用的数据集,把它们加载到Spark,然后开始对数据进行探索和可视化。

2.1.1 访问公开可用的数据集

就像程序开源运动使软件免费一样,也有非常活跃的数据开放运动,使得每一个研究者和分析师都可以自由获取这些数据。在全世界范围内,大多数国家政府收集的数据集是向公众开放的。例如http://www.data.gov/,这个网站有超过14万的数据集可供免费使用,包括农业、金融和教育等领域。

除了来自各政府机构的开放数据,许多研究机构也收集了很多非常有用的数据集,并且可被公众所用。这本书中我们将使用的有如下几个数据集:

印第安纳大学提供一个非常丰富的数据集,包括535亿个HTTP地址。想获取这些数据,请访问:http://cnets.indiana.edu/groups/nan/webtraffic/click-dataset/。

广为人知的加州大学欧文分校机器学习库提供超过300个数据集可供探索。想获取他们的数据集,请访问:https://archive.ics.uci.edu/ml/datasets.html。

匹兹堡大学的Tycho?项目提供了自1888年以来美国境内所有须向卫生署报告的疾病报告,这些报告以周为单位。想获取他们的数据集,请访问:http://www.tycho.pitt.edu/。

ICPSR拥有许多体量并不是很大,但是质量非常好,并且可用于研究的数据集。想获取他们的数据集,请访问:http://www.icpsr.umich.edu/index.html。

另外一个众所周知的数据集是1987年~2008年的航线性能数据,它的体量巨大,拥有1.2亿条记录,已经被用在许多研究和少量比赛中。想获取这些的数据集,请访问:http://statcomputing.org/dataexpo/2009/the-data.html。

2.1.2 加载数据集到Spark

有许多方法可以将数据集加载到Spark平台,或者直接连接数据源到Spark平台。由于Apache Spark每三周更新一次,其功能在不断提升,更新、更方便的加载数据方法,以及展现数据的方法有望能够及时提供给用户。

举例来说,在Spark 1.3版本以前, JdbcRDD是连接关系型数据源和传输数据元素到RDD的最受欢迎的方式。但是,从Spark 1.4版本开始,它通过一个内置的数据源API连接到任意一个使用Dataframe的 JDBC数据源。

加载数据并不是一个简单的任务,因为它通常涉及转换或解析原始数据,以及处理数据格式转换。Spark数据源API允许用户使用基于DataSource API的库来读取和写入来自不同系统的不同格式的DataFrame。同时,由于使用了Spark SQL查询优化器技术,Spark数据源API的数据存取功能十分高效。

想要加载DataFrame的数据集,最好使用sqlContext.load。为此,我们需要说明以下内容:

数据源名称:这是我们加载的数据源。

选项:对于特定的数据源有一些参数,例如,数据路径。

举例来说,我们可以使用下面的代码:

 

要导出数据集,用户可以使用dataframe.save或df.write来保存处理过的DataFrame到一个数据源。具体说明如下:

数据源名称:这是我们要保存的数据源。

保存模式:这是当数据已经存在时,我们应该做的。

选项:对于特定的数据源有一些参数,例如,数据路径。

creatExternalTable和SaveAsTable命令也是非常有用的。

有关使用Spark DataSource API的更多信息,请访问:https://databricks.com/blog/2015/01/09/spark-sql-data-sources-api-unified-data-access-for-the-spark-platform.html。

2.1.3 数据集探索和可视化

在Apache Spark中,有很多方法来进行一些数据集的初步探索和可视化,这些数据集可以使用不同的工具加载。用户可以直接通过Spark Shell使用Scala语言或Python语言。或者,用户可以使用notebook方法,就是在Spark环境中使用R语言或Python语言的notebook,类似DataBricks Workspace。另一种方法是使用Spark的MLlib。

或者,用户可以直接使用Spark SQL及其相关库,如广受欢迎的Panda库,进行一些简单的数据探索。

如果数据集已经转化成Spark DataFrame,用户可以使用df.describe().show()获取一些简单的含样本总体特征的统计数据,例如所有列(变量)的均值、标准差、最小值和最大值。

如果DataFrame有很多列,用户应当使用df.describe(column1, column2, …).show()语句来指定列,以便于仅获取他们感兴趣的列的描述性统计数据。你也可以只使用这个命令选择你需要的统计数据:

 

除此之外,一些经常使用的协方差、相关运算、交叉列表命令如下:

 

如果使用DataBricks workspace,用户可以创建R notebook,那么他们将回到熟悉的R语言环境中,并且可以访问所有的R语言程序包,他们可以使用notebook方法进行数据集的交互探索和可视化研究。看一看下面的例子:

 

 

从现在开始,我们将会大量地使用DataBricks Workspace,建议用户在https://accounts.cloud.databricks.com/registration.html#signup注册一个试用账号。在网站主菜单栏的左上角设置一些群集,具体如下:

 

然后,用户可以到相同的主菜单中,单击“Workspace”右侧的向下箭头并导航到“Create | New Notebook”,创建一个notebook,如下图所示:

 

当出现Create Notebook对话框时,需要执行以下操作:

为你的notebook输入一个唯一的名字。

对于语言,单击下拉菜单,选择R语言。

对于集群,单击下拉菜单并选择你之前创建的集群。

相关文章
|
9月前
|
存储 机器学习/深度学习 Apache
如何将Apache Hudi应用于机器学习
如何将Apache Hudi应用于机器学习
75 0
|
6月前
|
SQL 机器学习/深度学习 开发工具
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
|
8月前
|
机器学习/深度学习 人工智能 PyTorch
人工智能平台PAI产品使用合集之Alink是否加载预训练好的pytorch模型
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
172 10
|
8月前
|
机器学习/深度学习 运维 Serverless
Serverless 应用引擎产品使用合集之PAI-DSW环境中,想要访问根目录下其他文件夹,如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
8月前
|
机器学习/深度学习 人工智能 分布式计算
人工智能平台PAI操作报错合集之在ODPS的xxx_dev项目空间调用easyrec训练,需要访问yyy项目空间的OSS,出现报错,是什么导致的
阿里云人工智能平台PAI (Platform for Artificial Intelligence) 是阿里云推出的一套全面、易用的机器学习和深度学习平台,旨在帮助企业、开发者和数据科学家快速构建、训练、部署和管理人工智能模型。在使用阿里云人工智能平台PAI进行操作时,可能会遇到各种类型的错误。以下列举了一些常见的报错情况及其可能的原因和解决方法。
|
9月前
|
机器学习/深度学习 数据采集 分布式计算
【机器学习】Spark ML 对数据进行规范化预处理 StandardScaler 与向量拆分
标准化Scaler是数据预处理技术,用于将特征值映射到均值0、方差1的标准正态分布,以消除不同尺度特征的影响,提升模型稳定性和精度。Spark ML中的StandardScaler实现此功能,通过`.setInputCol`、`.setOutputCol`等方法配置并应用到DataFrame数据。示例展示了如何在Spark中使用StandardScaler进行数据规范化,包括创建SparkSession,构建DataFrame,使用VectorAssembler和StandardScaler,以及将向量拆分为列。规范化有助于降低特征重要性,提高模型训练速度和计算效率。
187 6
|
9月前
|
机器学习/深度学习 分布式计算 算法
【机器学习】Spark ML 对数据特征进行 One-Hot 编码
One-Hot 编码是机器学习中将离散特征转换为数值表示的方法,每个取值映射为一个二进制向量,常用于避免特征间大小关系影响模型。Spark ML 提供 OneHotEncoder 进行编码,输入输出列可通过 `inputCol` 和 `outputCol` 参数设置。在示例中,先用 StringIndexer 对类别特征编码,再用 OneHotEncoder 转换,最后展示编码结果。注意 One-Hot 编码可能导致高维问题,可结合实际情况选择编码方式。
145 6
|
8月前
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
55 0
|
8月前
|
机器学习/深度学习 人工智能 分布式计算
人工智能平台PAI产品使用合集之在easy_rec中,将model_dir设置为oss地址时,oss相关配置需要加载在环境中,有完整的示例吗
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
9月前
|
机器学习/深度学习 分布式计算 算法
使用Spark进行机器学习
【5月更文挑战第2天】使用Spark进行机器学习
106 2

热门文章

最新文章

推荐镜像

更多