zoukankan      html  css  js  c++  java
  • 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(除非你的类对构造器有特别的考虑)。

  • 相关阅读:
    NHibernate错误集锦
    potree的第三方库
    potree的API说明文档
    potreeConverter之数据处理
    potreeConverter之环境配置
    SpringBoot读取配置文件信息
    SpringBoot启动tomcat失败
    AbstractRoutingDataSource动态切换数据源
    多数据源配置(Spring+mybatis)
    单一数据源配置(Spring+Mybatis)
  • 原文地址:https://www.cnblogs.com/wdmx/p/9945309.html
Copyright © 2011-2022 走看看