Перекрестная проверка в apache-spark. Как создать сетку параметров? - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь настроить ParamGrid для использования перекрестной проверки позже.Но я не смог найти объяснения по поводу входных аргументов.

После создания конвейера я пытаюсь создать сетку параметров, но так как я не понимаю, какие записи ожидаются, я получаю ошибки.

//creating my pipeline with indexer, oneHotEncoder, creating the feature vector and applying linear regression on it
val IndexedList = StringList.flatMap{ name =>

    val indexer = new StringIndexer().setInputCol(name).setOutputCol(name + "Index")

    val encoder = new OneHotEncoderEstimator()
        .setInputCols(Array(name+ "Index"))
        .setOutputCols(Array(name + "vec"))

  Array(indexer,encoder)
  }

 val features = new VectorAssembler().setInputCols(Array("Modellvec", "KM", "Hubraum", "Fuelvec","Farbevec","Typevec","F1","F2","F3","F4","F5","F6","F7","F8")).setOutputCol("Features2")
  val linReg = new LinearRegression()//.setFeaturesCol(features2.getOutputCol).setLabelCol("Preis")

//creates the Array of stages
  val IndexedList3 = (IndexedList :+ features :+ linReg).toArray[PipelineStage]

  val pipeline2 = new Pipeline()

//This grid should be created in order to apply cross-validation
  val <b>pipeline_grid</b> = new ParamGridBuilder()
      .baseOn(pipeline2.stages -> IndexedList3)
      .addGrid(linReg.regParam, Array(10,15,20,25,30,35,40,45,50,55,60,65,70,75) ).build()

Первая часть работает просто отличнокогда я запускаю его отдельно.

Проблема в том, что я не понимаю, как должен выглядеть массив в "addGrid" (или как я должен выбирать значения) и почему это проблема, что linReg.regParam имеет тип DoubleParam, так как addGrid IS определен для этого типа.

В большинстве примеров, которые я видел, этот массив появляется из ниоткуда.Так может ли кто-нибудь объяснить мне, откуда это?

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