一旦自定义 PySpark Transformer 成为安装的 ML Pipeline 中的一个阶段,如何为它设置参数?

2024-05-18

我编写了一个自定义 ML PipelineEstimator and Transformer对于我自己的 Python 算法,遵循所示的模式here https://stackoverflow.com/a/37279526/1843329.

然而,在该示例中,所需的所有参数_transform()由估计器方便地传递到模型/变压器中_fit()方法。但我的变压器有几个参数来控制变换的应用方式。这些参数是变压器特定的,因此将它们与用于拟合模型的特定于估计器的参数一起提前传递到估计器中会感觉很奇怪。

我可以通过添加额外的内容来解决这个问题Params到变压器。当我在 ML Pipeline 之外使用估算器和转换器时,这种方法效果很好。但是,一旦我的估计器对象作为阶段添加到管道中,如何设置这些特定于转换器的参数呢?例如,您可以调用getStages() on a pyspark.ml.pipeline.Pipeline因此可以得到估计量,但是没有对应的getStages()方法上PipelineModel。我在上面看不到任何设置参数的方法PipelineModel阶段要么。

那么在调用之前如何设置变压器的参数transform()在拟合的管道模型上?我使用的是 Spark 2.2.0。


没有getStages()方法上PipelineModel但同一个班级确实有一个无证会员 https://github.com/apache/spark/blob/v2.2.0/python/pyspark/ml/pipeline.py#L189 called stages.

例如,如果您刚刚安装了具有 3 个阶段的管道模型,并且想要在第二阶段设置一些参数,则可以执行以下操作:

myModel = myPipelineModel.stages[1]
myModel.setMyParam(42)
# Or in one line:
#myPipelineModel.stages[1].setMyParam(42)

# Now we can push our data through the fully configured pipeline model:
resultsDF = myPipelineModel.transform(inputDF)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一旦自定义 PySpark Transformer 成为安装的 ML Pipeline 中的一个阶段,如何为它设置参数? 的相关文章

随机推荐