因此,我正在训练一个带有超参数调优的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]现在,我想将参数映射保存到一个txt中,并在以后解析它。但是,当我尝试将其导出到文本文件中时,如下所示:
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}
发布于 2019-02-14 17:33:41
首先,您不能使用常规BufferedWriter将Spark中的内容保存到本地文件系统。通常,对于Dataframe和RDDs,您将使用Spark API并为"file:///"添加路径前缀,如下所示- How to save Spark RDD to local filesystem。另外,你可以使用MLWriter来做你正在做的事情,并且你可以像so - 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")https://stackoverflow.com/questions/54686487
复制相似问题