我使用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]
答案 0 :(得分:2)
通常你必须将bestModel强制转换为特定的模型,例如ALSModel。 但是ALSModel类没有regParam字段。不幸的是,我想没有办法提取所选的regParam,这对Spark开发人员来说确实是一个问题。
您可以打开CrossValidator的日志记录,因为它记录了所选的最佳参数集