• sciki-learn spark 中自定义转换器


    尽管Spark ML管道提供了各种各样的算法,你仍可能想要额外的功能,并且不脱离管道模型。在Spark Mllib中,这算不上什么问题,你可以通过RDD的变换来实现你自己的算法,并继续下去。对于Spark ML 管道来说,同样的方法是可行的,但是我们会失去一些管道所具备的优良特性,包括自动执行元算法的能力,例如交叉验证的参数搜索。在本文中,你会从标准的wordcount例子入手(在大数据方面,你是不可能真正躲开wordcount例子的),了解到如何扩展Spark ML 管道模型。

    为了将你自己的算法加入Spark管道中来,你需要实现Estimator或者是Transformer,它们都实现了PipelineStage接口。对于那些不需要训练的算法,你可以实现Transformer接口,而对于那些需要训练的算法,你需要实现Estimator接口,它们都定义在org.apache.spark.ml下(都实现了基类 PipelineStage)。要说明的是,训练并不是只限于复杂的机器学习模型,即使是最大最小值区间缩放器也需要训练来确定范围。如果你的算法需要训练,它们必须以Estimator来构建而不是Transformer。

    注:直接使用PipelineStage是不可行的,因为管道内部使用了反射机制,假定了所有的管道stage要么是一个Estimator,要么就是Transformer。

    除了显而易见的transform和fit方法,所有的管道的stage需要提供transformSchema,以及一个copy构造器或者实现一个可以为你提供这些功能的类。copy是用来制作一个当前stage的拷贝,合并入任何新指定的参数,可以简称为defaultCopy(除非你的类对构造器有特别的考虑)。

  • 相关阅读:
    脱壳基础知识入门
    补码的运算
    二补数
    原码 & 反码 & 补码 & 详解
    中国黑客传说:周景平——我是超级黑
    VB程序破解之API断点[bp __vbaVarTstEq]
    ecshop报错”Deprecated: Assigning the return value of…”解决办法
    Ecshop安装过程中的的问题:cls_image::gd_version()和不支持JPEG
    php 关于日期的一些计算
    localStorage使用总结,页面跳转,保存值
  • 原文地址:https://www.cnblogs.com/wdmx/p/9945309.html
Copyright © 2020-2023  润新知