Scala присваивает значение в операторе if else - PullRequest
0 голосов
/ 19 сентября 2019

Довольно плохо знаком с scala.

У меня есть оператор if else, который на основе условия присваивает значение переменной.

import org.apache.spark.ml.{Pipeline, PipelineModel, PipelineStage}
modelType = "rf" 

def train(trainingData: DataFrame): PipelineModel = {

        val xgb = new XGBoostClassifier()
          .setLabelCol("label")
          .setFeaturesCol("features")
          .setObjective("binary:logistic")
          .setEvalMetric("auc")  

        val rf = new RandomForestClassifier()
          .setLabelCol("label")
          .setFeaturesCol("features")
          .setImpurity("gini")

         if (modelType == "rf") {
             val pipeline = new Pipeline()
              .setStages(Array[PipelineStage](rf))
             } else if (modelType == "xgb") {
            val pipeline = new Pipeline()
              .setStages(Array[PipelineStage](rf))
             }


        pipeline.fit(trainingData)
        }

Но я вижу эту ошибку: pipeline not found.Означает ли это, что переменная конвейера не назначена?Как я могу переписать это?

1 Ответ

2 голосов
/ 19 сентября 2019

Вы устанавливаете if для переменной

  val xgb = new XGBoostClassifier()
              .setLabelCol("label")
              .setFeaturesCol("features")
              .setObjective("binary:logistic")
              .setEvalMetric("auc")  

            val rf = new RandomForestClassifier()
              .setLabelCol("label")
              .setFeaturesCol("features")
              .setImpurity("gini")

           val pipeline =  if (modelType == "rf") {
                  new Pipeline()
                  .setStages(Array[PipelineStage](rf))
                 } else if (modelType == "xgb") {
                new Pipeline()
                  .setStages(Array[PipelineStage](rf))
                 }
                  }

            pipeline.fit(trainingData)
            }
...