美文网首页
(3)MLlib API和机器学习系统

(3)MLlib API和机器学习系统

作者: 顽皮的石头7788121 | 来源:发表于2019-03-05 16:32 被阅读0次

    MLlib程序包如下图所示

    如图所示。

            每个模型都有一个伴生对象,是模型的入口,定义了模型训练的train方法。而实际使用时调用的是run方法。有点类似Java中的线程。

            同时Spark 机器学习的API,将从RDD过渡到DataSet和DataFrame。

    (1)Spark 机器学习系统

             Spark机器学习系统,类似于一个数据流水线。其架构如下

    机器学习架构

    1、数据预处理

            首先查看数据统计信息,包括最大值、均值、最小值、分位数、方差等

            案例如下:

            Data为读入数据的RDD

            schemauser = saprk.createDataFrame(Data).#DataFrame类似数据库中的表或者视图,可以对其进行查询等,也可以将数据中某几个列组合起来构成

            schemauser.createOrReplaceTempView("user")

            schemauser.describe("userid","age","gender","XXX").show()即可得出。

    2、数据质量分析,主要注意缺失值、异常值、不一样的值和错误数据

            缺失值可以通过df.count()得到。或者画出线箱图来看。    其使用如https://baike.baidu.com/item/%E7%AE%B1%E5%BD%A2%E5%9B%BE/10671164?fr=aladdin

    3、数据特征分析

            包括特征分布分析、对比分析、统计量分析(特征之间的相关性分析)

            主要分析特征的分布类型和是否对称等。(在进行机器学习前所有特征都进行了数字化)通过柱状图等实现

            hist(age,bins=20,color = 'lightblue',normed = true)

    (2)PipeLine

            一个PipeLine包含多个Stage ,每个Stage完成一个任务。由两个基本组建组成Transformer和Estimator。transformer是数据转换器,Estimator是评估器。transformer通过transform()方法转换数据;Estimator通过fit()方法进行训练。

            使用PipeLine进行训练的过程为:

                #输入数据为文本和对应标签

                #定义三个Stage ,tokenizer,hashingTF,lr

                val tokenizer = new Tokenizer()

                                    .setInputCol("text")

                                    .setoutputCl("word")

                val hashingTF = new HashingTF()

                                    .setNumFeatures(1000)

                                    .setInputCol(tokenizer.getOutputCol)

                                    .setoutputCol("feature")

                val lr = new LogistiicRegression()

                                    .setMaxIter(10)

                                    .setRegParam(0.001)

                val pipeline = new PipeLine()

                                    .setDtage(Array(tokenizer,hashingTF,lr))

                val model = pipeline.fit(Data)

    (3)在训练时可以设置参数数组,通过循环训练不同参数下的模型,选择效果最好的

    4、MLlib最核心的是ML Optimizer 。它可以把复杂的学习任务转化为学习计划,并提供内部实现好的算法和参数。

    相关文章

      网友评论

          本文标题:(3)MLlib API和机器学习系统

          本文链接:https://www.haomeiwen.com/subject/kblouqtx.html