gpt4 book ai didi

apache-spark - Spark 自定义估算器,包括持久性

转载 作者:行者123 更新时间:2023-12-04 05:10:38 27 4
gpt4 key购买 nike

我想为 spark 开发一个自定义估计器,它也可以处理出色的管道 API 的持久性。但是作为 How to Roll a Custom Estimator in PySpark mllib说它那里没有很多文档(还)。

我有一些用 spark 编写的数据清理代码,并希望将其包装在自定义估算器中。包括一些 na 替换、列删除、过滤和基本特征生成(例如,出生日期到年龄)。

  • transformSchema 将使用数据集的案例类 ScalaReflection.schemaFor[MyClass].dataType.asInstanceOf[StructType]
  • 适合只会适合例如平均年龄为 na。替补

  • 我还不清楚的是:
  • transform在自定义管道模型中将用于在新数据上转换“拟合”估计器。它是否正确?如果是,我应该如何传输拟合值,例如从上面进入模型的平均年龄?
  • 如何处理持久性?我发现了一些通用的loadImpl私有(private) Spark 组件中的方法,但不确定如何传输我自己的参数,例如MLReader 的平均年龄/MLWriter用于序列化。

  • 如果您可以帮助我使用自定义估算器,那就太好了 - 特别是在持久性部分。

    最佳答案

    首先,我相信你混合了两种不同的东西:

  • Estimators - 表示可以是 fit 的阶段- 泰德。 Estimator fit方法采用 Dataset并返回 Transformer (模型)。
  • Transformers - 表示可以transform 的阶段数据。

  • 当你 fit Pipelinefits全部 Estimators并返回 PipelineModel . PipelineModel可以 transform数据顺序调用 transform全部 Transformers在模型中。

    how should I transfer the fitted values



    这个问题没有单一的答案。一般来说,您有两种选择:
  • 将拟合模型的参数作为 Transformer 的参数传递.
  • 制作拟合模型的参数 Params Transformer .

  • 第一种方法通常由内置 Transformer 使用。 ,但第二个应该在一些简单的情况下工作。

    how to handle persistence


  • 如果 Transformer仅由其 Params 定义您可以扩展 DefaultParamsReadable .
  • 如果你使用更复杂的参数,你应该扩展 MLWritable并实现MLWriter这对您的数据有意义。 Spark 源码中有多个示例展示了如何实现数据和元数据的读/写。

  • 如果您正在寻找一个易于理解的示例,请查看 CountVectorizer(Model)在哪里:
  • EstimatorTransformer share common Params .
  • 模型词汇is a constructor argument , 型号 parameters are inherited from the parent .
  • 元数据(参数)为 written一个 read使用 DefaultParamsWriter/DefaultParamsReader .
  • 自定义实现处理数据(词汇)writingreading .
  • 关于apache-spark - Spark 自定义估算器,包括持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40817433/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com