Ошибка создания customTransformer в PySpark ML - PullRequest
0 голосов
/ 29 июня 2019

Я создал собственный преобразователь в PySpark ML и получаю следующую ошибку, когда пытаюсь использовать его как часть конвейера, который используется для обучения модели:

    trained_pipeline = crossval.fit(train_split).bestModel
    File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/ml/base.py", 
    line 132, in fit
    return self._fit(dataset)
    File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/ml/tuning.py", 
    line 303, in _fit
    tasks = _parallelFitTasks(est, train, eva, validation, epm, 
    collectSubModelsParam)
    File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/ml/tuning.py", 
    line 49, in _parallelFitTasks
    modelIter = est.fitMultiple(train, epm)
    File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/ml/base.py", line 103, in fitMultiple
    estimator = self.copy()
    File 
     "/usr/lib/spark/python/lib/pyspark.zip/pyspark/ml/pipeline.py", line 128, in copy
     stages = [stage.copy(extra) for stage in that.getStages()]
     File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/ml/pipeline.py", line 128, in <listcomp>
     stages = [stage.copy(extra) for stage in that.getStages()]
     File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/ml/param/__init__.py", line 383, in copy
    that._paramMap = {}
    AttributeError: 'dict' object has no attribute '_paramMap'

Пользовательский код Transformer выглядит следующим образом:

class MyCustomTransformer(Transformer):

   def _transform(self, input_df):
      new_df = input_df.withColumn("newcol",
                F.when(
                    F.when(F.col(col1) == F.lit("A"), F.col(W))
                    .otherwise(
                        F.when(F.col(col1) == F.lit("B"), F.col("X")))
                    .otherwise(...)
      return new_df

Может кто-нибудь сказать мне, что я делаю неправильно или чего мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...