我正在用CrossValidator训练ALS模型:
val als = new ALS()
.setMaxIter(5)
.setUserCol("userId")
.setItemCol("movieId")
.setRatingCol("rating")
val evaluator = new RegressionEvaluator()
.setMetricName("rmse")
.setLabelCol("rating")
.setPredictionCol("prediction")
val paramGrid = new ParamGridBuilder()
.addGrid(als.regParam, Array(0.001, 0.01, 0.1, 1))
.build()
val cv = new CrossValidator()
.setEstimator(als)
.setEvaluator(evaluator)
.setEstimatorParamMaps(paramGrid)
.setNumFolds(3)
val cvModel = cv.fit(training)我想检查所选的regParam值。我试过这个:
val bestRegParam = cvModel.bestModel.getRegParam()然而,我得到了一个例外:
值getRegParam不是org.apache.spark.ml.Model_$5的成员
发布于 2018-01-12 14:49:27
通常,您必须将bestModel转换为特定的模型,例如ALSModel。但是ALSModel类没有regParam字段。不幸的是,我想没有办法提取选择的regParam,这对星火开发者来说确实是个问题。
您可以打开CrossValidator的日志记录,因为它记录所选的最佳参数集。
https://stackoverflow.com/questions/48059262
复制相似问题