Spark大数据分析与实战(第二版) 项目8 Spark ML预测森林植被品种_第1页
Spark大数据分析与实战(第二版) 项目8 Spark ML预测森林植被品种_第2页
Spark大数据分析与实战(第二版) 项目8 Spark ML预测森林植被品种_第3页
Spark大数据分析与实战(第二版) 项目8 Spark ML预测森林植被品种_第4页
Spark大数据分析与实战(第二版) 项目8 Spark ML预测森林植被品种_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大数据分析与实战项目8SparkML预测森林植被品种采集了不同点位的海拔、坡度、遮阳情况和土壤类型等数据,并给出了目前该地块成长最为旺盛的森林植被类型。工作人员希望借助SparkML模块,预测某个片区适宜种植的树木种类如果能够根据土壤、水文、日照等因素预测某地块最适合生长哪种树木,这样就可以提高成活率、节约养护成本及物力,从而达到事半功倍的效果。情境导入Spark项目分解Spark序号任务任务说明1认识SparkML了解机器学习及应用场景,认识SparkML中的数据类型Vector,能够学会基本的数据特征转换。2决策树探究植被种类熟悉几种常用的聚类、分类与推荐算法;利用决策树算法构建初始模型,预测森林植被的品种。3优化提升预测准确率通过超参数设置等,提升森林植被预测准确率(达90%以上);引入随机森林算法,将准确率进一步提升(达93%以上),形成最终模型;并将模型应用到实时预测中。了解贝叶斯分类、决策树分类、随机森林分类的思想,能应用相关算法完成分类。了解机器学习算法分类、应用,能够完成简单的特征转换。完成简单的模型调优,找出“最佳”模型,根据业务需求保存模型、加载模型。123学习目标Spark项目8

SparkML预测森林植被品种Spark任务1机器学习及应用场景决策树探究植被种类进一步提升预测的准确率任务2任务3任务分析Spark机器学习是近几十年来人工智能研究的热点问题,Spark内置了功能强大的机器学习库SparkMLlib/ML了解机器学习的基本概念、原理、分类以及应用情况,能够根据需要完成数据的特征提取、特征转换工作。机器学习与应用场景Spark机器学习是一门多学科交叉专业,涵盖概率论、统计学、复杂算法等知识,使用计算机作为工具并致力真实的模拟人类学习方式,将现有内容进行知识结构划分来有效提高学习效率。机器学习最基本的做法是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。应用:虚拟个人助理、交通预测与路线规划、你可能认识的人、垃圾邮件垃圾信息过滤等。机器学习的分类Spark监督学习(有导师学习):对于数据集,我们已经知道输入和输出结果之间的关系;然后根据这种已知的关系,训练得到一个最优的模型。在监督学习中训练数据既有特征(feature)又有标签(label),通过训练让机器可以自己找到特征和标签之间的联系,在面对只有特征没有标签的数据时,可以判断出标签。无监督学习(无导师学习):与监督学习不同,对于给定的数据集,事先不知道数据与特征之间的关系,而是要根据聚类或一定的模型得到数据之间的关系。强化学习(增强学习):一种在没有提供标签的框架下,以试错的方式、积极地去探索未知环境的学习方法,是一种迭代式的机器学习。半监督学习:包含大量未标注数据和少量标注数据。主要是利用未标注中的信息,辅助标注数据,进行监督学习。认识Spark机器学习库Spark而机器学习算法通常需要大量迭代(本次计算的结果要作为下一次迭代的输入),如果使用MapReduce实现机器学习,则比较低效(磁盘IO操作过多)。Spark是基于内存的计算,在机器学习迭代方面有着天然优势。Spark机器学习库从1.2版本以后被分为两个包:(1)Spark.mllib

包含基于RDD的原始算法API。(2)Spark.ml

则提供了基于DataFrames

高层次的API,可以用来构建机器学习工作流(PipeLine),并且为多种机器学习算法与编程语言提供统一的接口。ML中的数据类型与特征SparkSpark机器学习提供的数据类型主要包括本地向量(Vector)、标注点(LabeledPoint)及本地矩阵等。本地向量Vector分为密集型向量(Dense)和稀疏型向量(Sparse)两类。scala>importorg.apache.spark.ml.linalg.{Vector,Vectors}//导入包scala>valdv=Vectors.dense(2.4,0.0,3.6)//创建密集向量dv:org.apache.spark.ml.linalg.Vector=[2.4,0.0,3.6]scala>valsv=Vectors.sparse(3,Array(0,2),Array(2.4,3.6))//创建稀疏向量sv:org.apache.spark.ml.linalg.Vector=(3,[0,2],[2.4,3.6])ML中的数据类型与特征Spark标注点(LabeledPoint)是一种带有标签(Label)的本地向量,通常应用于监督学习算法(可以用于回归、分类)。scala>importorg.apache.spark.ml.feature.LabeledPoint//导入包

//创建一个标签值为1.0的稠密向量标注点scala>valLabDense=LabeledPoint(1.0,Vectors.dense(2.4,0.0,3.6))LabDense:org.apache.spark.ml.feature.LabeledPoint=(1.0,[2.4,0.0,3.6])特征的处理Spark特征提取:利用已有特征计算出一个抽象程度更高的特征集,SparkML提供的特征提取API有TF-IDF(词频-逆向文件词频)、Word2Vec(单词向量表示)等,常用于自然语言处理NLP中。特征转换:机器学习的数据中,不同字段在量纲、量级方面存在较大差异;为了减少这类因素对模型的影响,经常需要对数据进行标准化或归一化,该过程称为特征转换;包括Binarizer、MinMaxScaler、StringIndexer等。特征选择:特征选择是指从已有的M个特征(Feature)中选择N个特征,即从原始特征中选择出一些最为有效的特征以降低数据维度的过程,是提高机器学习算法性能的一种手段。相关知识小结Spark机器学习:有监督学习、无监督学习等类型。向量:密集向量、稀疏向量标注点:带有标签值的向量特征的处理:特征提取、特征转换、特征选择根据知识储备的相关知识,完成单元的任务实施工作。任务实施项目8

SparkML预测森林植被品种Spark任务1机器学习及应用场景决策树探究植被种类进一步提升预测的准确率任务2任务3任务分析Spark现有了一组森林植被数据covdata.txt,包含五十余万行,每行代表森林中一个采集点位(地块)的相关情况采用决策树算法预测森林植被的种类,为提高林木种植成活率提供技术信息参考。聚类算法Spark所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇。最常用的聚类算法为k-means,其中k代表类簇个数,means代表类簇内数据对象的均值;实现过程:(1)根据给定的k值,随机选取k个样本点作为初始划分中心;(2)计算所有样本点到每一个划分中心的距离,并将所有样本点划分到距离最近的划分中心;(3)计算每个划分中样本点的平均值,将其作为新的中心;(4)循环进行2~3步直至达到最大迭代次数,或划分中心的变化小于某一预定义阈值。聚类算法——k-means示例Spark鸢尾花数据集以鸢尾花的特征作为数据来源,是在数据挖掘、数据分类中非常常用的数据集;样本容量为150行,每行包括6个字段(列),第1个字段为行号(没有实际意义,分析时去掉),第2-第5字段为鸢尾花萼片长、萼片宽、花瓣长、花瓣宽等特征,第6个字段(列)为该样本对应鸢尾花的亚种类型(共有3个亚种,分别为setosa、versicolor、virginica)行号,5.1,3.5,1.4,0.2,setosa行号,5.4,3.0,4.5,1.5,versicolor行号,7.1,3.0,5.9,2.1,virginica聚类算法——k-means示例Sparkscala>valdata=sc.textFile("file:///home/hadoop/data/iris.txt")scala>valdataDF=data.map(x=>x.split(",")).map(x=>(Vectors.dense(x(1).toDouble,x(2).toDouble,x(3).toDouble,x(4).toDouble),x(5))).toDF("features","label")//生成DF,包含features、label两列聚类算法——k-means示例Sparkscala>valkmeansmodel=newKMeans().setK(3).setFeaturesCol("features").setPredictionCol("prediction").fit(dataDF)//创建k-means模型scala>valresult=kmeansmodel.transform(dataDF)scala>result.show(150)分类算法Spark分类是一种重要的机器学习和数据挖掘技术,其目的是根据数据集的特点构造一个分类模型,该模型可以把位置类别的样本映射到指定类别中。构造分类模型的过程一般分为训练和测试两个阶段,数据亦分为训练数据和测试数据两部分;用训练数据构建初始的分类模型,然后用测试数据来评价模型的分类准确性。Spark支持的分类包括贝叶斯分类、决策树、随机森林、支持向量机等。决策树分类的原理Spark决策树是一种基本的机器学习算法,主要用于解决分类问题(二分类或多分类),其思想是通过组合使用某些判断条件,将数据件归入某个类别中。例如某银行接到若干客户的贷款申请,银行在发放贷款前需充分考虑客户的违约风险;假设根据客户是否有房、婚姻状况和年收入等确定放贷结论。决策树分类的示例Spark

rawDF是读取iris.txt后生成的DF,包含features、label两列;但label为String,不符合决策树算法要求,需要转为数值型;为此可以引入StringIndexer。vallabelIndexer=newStringIndexer().setInputCol("label").setOutputCol("labelIndex").fit(rawDF)valirisDF=labelIndexer.transform(rawDF)此时,irisDF包含了三列label、features、labelIndex。决策树分类的示例Spark使用randomSplit方法,将数据集irisDFIndexed划分为训练集和测试集,为后续的模型训练做好准备。valArray(trainingDF,testDF)=irisDFIndexed.randomSplit(Array(0.7,0.3))构建一个决策树分类器,设置好特征列、标签列;valdt=newDecisionTreeClassifier().setFeaturesCol("featuresIndex").setLabelCol("labelIndex")针对训练数据trainingDF,进行学习、训练从而得到决策树模型dtModel。valdtModel=dt.fit(trainingDF)决策树分类的原理Spark针对测试集testDF,调用决策树模型dtModel的transform方法,得到预测值predictions,然后打印部分内容。valpredictions=dtModel.transform(testDF)predictions.select("features","label","labelIndex","prediction").show(5)决策树分类的原理Spark还可以构造一个分类模型Evaluator,用于计算模型的预测精度。valevaluator=newMulticlassClassificationEvaluator().setLabelCol("labelIndex").setPredictionCol("prediction").setMetricName("accuracy")调用evaluate方法,计算出模型的预测精度。valaccuracy=evaluator.evaluate(predictions)println("该决策树模型的精度为:"+accuracy)聚类算法:k-means算法分类算法:决策树、贝叶斯分类等等Spark针对数据集covdata.txt,借助决策树算法,预测各个点位的森林植被品种,并计算模型的预测精准度。任务实施相关知识小结Spark项目8

SparkML预测森林植被品种Spark任务1机器学习及应用场景决策树探究植被种类进一步提升预测的准确率任务2任务3任务分析Spark在前述任务中,我们构建了一个决策树模型dtModel,其预测的准确率为71%左右(仍不够理想);能否进一步提升预测准确率呢?本任务,我们将引入超参数、随机森林算法等技术手段,构建一个新模型,使其准确率达90%以上;同时尝试模型的存储与二次利用,编写一个StructuredStreaming流式计算程序读取Socket(9999端口)数据,然后利用构建好的模型开展实时预测。算法的调优Spark通常初次构建(生成)的模型相对比较“粗糙”,精确度等指标可能不高,需要调整算法参数从而得到一个更优的模型;调整算法参数来找到“最优”模型的过程称为调优(Tuning)。几乎所有机器学习的算法都有若干参数,这些参数不是有训练得出,而是由程序员指定;这些参数将对模型的准确度等产生重要的影响,称为超参数。SparkML提供了交叉验证(CrossValidator)和训练验证切分(TrainValidationSplit)两种方式,帮助程序员设置合适的超参数,得到“最优”模型。模型的保存与加载Spark对于效果好、准确率高的模型,通常需要保存起来。如果后续有新数据需要预测,则可直接读取保存好的模型并加以应用。model.write.overwrite().save(outputPath)要想使用之前的模型,只需调用load方法即可SparkML提供了交叉验证。valdtModel=DecisionTreeClassificationModel.load(outputPath)随机森林算法Spark随机森林算法是构建在决策树基础上的一种集成算法,是将若干个决策树组成一个决策森林。在SparkML中,随机森林可以充分利用分布式集群并行化计算的特点,不同的决策树分配到不同

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论