首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache Spark MLlib入门体验教程

Apache Spark MLlib入门体验教程

作者头像
深度学习与Python
发布2019-06-18 20:52:24
2.5K0
发布2019-06-18 20:52:24
举报

Spark介绍

大数据时代需要对非常大的数据集进行大量的迭代计算。 机器学习算法的运行实现需要具有超强计算力的机器。但是一味的依靠提升机器计算能力并不是一个好的选择,那样会大大增加我们的计算成本。因此就出现了分布式计算算法。使用分布式计算引擎是将计算分配给多台低端机器而不是使用单一的高端机器。 这无疑加快计算能力使我们能够创造更好的模型,还节省了成本开销。今天我们推荐的分布式计算框架是spark。
Apache Spark:Apache Spark是一个开源的集群计算框架。 最初由加州大学伯克利分校的AMPLab开发,Spark代码库后来被捐赠给Apache软件基金会,该基金会从那时起就一直在维护它。 Spark提供了一个接口,用于使用隐式数据并行和容错来编程整个集群。
MLlib:Apache Spark MLlib是机器学习库,由通用学习算法和实用程序组成,包括分类,回归,聚类,协同过滤, 降维和基础优化。

安装库

学习spark之前,我们需要安装Python环境,而且需要安装下边这两个关于Spark的库:

Apache Spark:安装Apache Spark非常简单。 您只需从官方网站下载该软件包即可。安装完成后可以在命令行测试是否安装成功,命令行cd进入spark安装路径查看spark版本的命令如下:

./pyspark --version 

如果显示下列结果说明安装成功。

findspark库:为了更轻松地使用Apache Spark,我们需要安装findspark库。 它是一个非常简单的库,可以自动设置开发环境以导入Apache Spark库。findspark库可以直接用pip进行安装。

pip3 install findspark 

Spark回归案例分析

安装好spark环境后,我们通过一个回归的例子来为大家演示如何用spark开始第一个spark小项目。本次数据集采用的是波士顿住房数据集,该数据集包含美国人口普查局收集的有关波士顿马萨诸塞州住房的信息。通过13个特征变量来对住房价格进行回归分析。

下边开始动手实现我们的项目

首先导入findspark库并通过传递Apache Spark文件夹的路径进行初始化。

# make pyspark importable as a regular library.
import findspark
findspark.init('/opt/spark')

每次使用Spark都需要先构建SparkSession,因此我们导入pyspark.sql库并初始化一个SparkSession 。

  from pyspark.sql import SparkSession 
  spark = SparkSession.builder.getOrCreate() 

下面我们开始加载数据,这里我们使用spark.read.csv,而不是使用我们之前用的pandas。

data = spark.read.csv('./boston_housing.csv', header=True, inferSchema=True) 

其中两个参数分别表示为:

  • header = True表示第一行包含标题
  • inferSchema = True可以自动检测基础数据格式

加载完数据后,我们可以直接使用data.show()来查看数据信息:

根据上边显示的数据信息,我们需要将1-13列作为变量,MEDV列作为数据标签进行预测,所以接下来我们要创建特征数组,这个过程只需导入VectorAssembler类并传入特征变量的列名称即可,非常简单直接,具体代码如下:

feature_columns = data.columns[:-1] # here we omit the final column 
from pyspark.ml.feature import VectorAssembler 
assembler =VectorAssembler(inputCols=feature_columns,outputCol="features") 
data_2 = assembler.transform(data) 

接下来就是训练集与测试集的划分,这里我们可以直接使用RandomSplit函数,而不是之前sklearn中的train_test_split函数。

train,test = data_2.randomSplit([0.7,0.3])

训练与评估模型,与平时我们训练和评估模型一样,只不过在spark中我们使用的是spark为我们提供的算法函数。在spark中我们需要从pyspark.ml中导入算法函数,使用model.transform()函数进行预测,这个和之前用的model.predict()还是有区别的。spark模型训练与评估代码如下:

from pyspark.ml.regression import LinearRegression 
algo = LinearRegression(featuresCol="features", labelCol="medv") 
model = algo.fit(train) 
evaluation_summary = model.evaluate(test) 
predictions = model.transform(test) 

完整代码

本次使用pyspark进行机器学习回归分析教程的完整代码如下所示,大家可以安装相应的库,然后下载数据按照教程一步一步跑出Apache Spark的入门尝鲜案例。

# make pyspark importable as a regular library.
import findspark
findspark.init('/opt/spark')
# create a SparkSession
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
# load data
data = spark.read.csv('./boston_housing.csv', header=True, inferSchema=True)
# create features vector
feature_columns = data.columns[:-1] # here we omit the final column
from pyspark.ml.feature import VectorAssembler
assembler = VectorAssembler(inputCols=feature_columns,outputCol="features")
data_2 = assembler.transform(data)
# train/test split
train, test = data_2.randomSplit([0.7, 0.3])
# define the model
from pyspark.ml.regression import LinearRegression
algo = LinearRegression(featuresCol="features", labelCol="medv")
# train the model
model = algo.fit(train)
# evaluation
evaluation_summary = model.evaluate(test)
evaluation_summary.meanAbsoluteError
evaluation_summary.rootMeanSquaredError
evaluation_summary.r2
# predicting values
predictions = model.transform(test)
predictions.select(predictions.columns[13:]).show() # here I am filtering out some columns just for the figure to fit
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习与python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大数据时代需要对非常大的数据集进行大量的迭代计算。 机器学习算法的运行实现需要具有超强计算力的机器。但是一味的依靠提升机器计算能力并不是一个好的选择,那样会大大增加我们的计算成本。因此就出现了分布式计算算法。使用分布式计算引擎是将计算分配给多台低端机器而不是使用单一的高端机器。 这无疑加快计算能力使我们能够创造更好的模型,还节省了成本开销。今天我们推荐的分布式计算框架是spark。
  • Apache Spark:Apache Spark是一个开源的集群计算框架。 最初由加州大学伯克利分校的AMPLab开发,Spark代码库后来被捐赠给Apache软件基金会,该基金会从那时起就一直在维护它。 Spark提供了一个接口,用于使用隐式数据并行和容错来编程整个集群。
  • MLlib:Apache Spark MLlib是机器学习库,由通用学习算法和实用程序组成,包括分类,回归,聚类,协同过滤, 降维和基础优化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档