Сохранение словаря в файл .txt в Scala - PullRequest
0 голосов
/ 14 февраля 2019

Итак, я тренирую xgboost с настройкой гиперпараметра.Итак, мой фрагмент кода выглядит примерно так:

val paramGrid = new ParamGridBuilder().
    addGrid(booster.minChildWeight, Array(0.3,0.6,0.7, 0.8)).
    addGrid(booster.eta, Array(0.1,0.2,0.4, 0.6)).
    build()


val cv = new CrossValidator().
    setEstimator(pipeline).
    setEvaluator(evaluator).
    setEstimatorParamMaps(paramGrid).
    setNumFolds(10)

val cvModel = cv.fit(df)

val bestModel = cvModel.bestModel.asInstanceOf[PipelineModel].stages(1).
    asInstanceOf[XGBoostClassificationModel]

Теперь я хочу сохранить карту параметров в текстовом формате и проанализировать ее позже.Однако, когда я пытаюсь экспортировать его в текстовый файл с чем-то вроде этого:

bestModel.extractParamMap()

val file = new File("/home/hadoop/test/hyper_params.txt")
val bw = new BufferedWriter(new FileWriter(file))
bw.write(bestModel.extractParamMap())
bw.close()

я получаю следующую ошибку:

error: overloaded method value write with alternatives:
  (x$1: Int)Unit <and>
  (x$1: String)Unit <and>
  (x$1: Array[Char])Unit
 cannot be applied to (org.apache.spark.ml.param.ParamMap)
       bw.write(bestModel.extractParamMap())

Я довольно новичок вscala и не удалось найти решение о том, как сохранить карту параметров в файл .txt.Это первый шаг моей проблемы.

Далее я хочу создать некоторые переменные, в которых я хочу прочитать значение сохраненных параметров из файла .txt.

Скажите что-то вроде этого:

val min_child_weight=('../param.txt){key value here}

Так как я могу это сделать?Я просмотрел несколько постов, таких как , и , , но не смог выяснить код для моих целей.

1 Ответ

0 голосов
/ 14 февраля 2019

Во-первых, вы не сохраняете вещи в Spark в локальную файловую систему, используя обычный BufferedWriter.Обычно для Dataframes и RDD вы должны использовать Spark API и префикс пути "file:///", как показано здесь - Как сохранить Spark RDD в локальной файловой системе .Кроме того, вы бы использовали MLWriter для того, что вы делаете, и вы сохранили бы весь конвейер следующим образом - https://jaceklaskowski.gitbooks.io/mastering-apache-spark/spark-mllib/spark-mllib-pipelines-persistence.html.

ОБНОВЛЕНО:

spark
 .sparkContext
 .parallelize(List(bestModel.extractParamMap().toString))
 .saveAsTextFile("file:///home/hadoop/test/hyper_params.txt")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...