如何检索 CrossValidator bestModel ALS regParam 值?
How to retrieve the CrossValidator bestModel ALS regParam value?
我正在使用 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()
但是,我遇到了异常:
value getRegParam is not a member of org.apache.spark.ml.Model[_]
通常您必须将 bestModel 转换为特定模型,例如ALS模型。
但是 ALSModel class 没有 regParam 字段。不幸的是,我想没有办法提取所选的 regParam,这对 Spark 开发人员来说确实是个问题。
您可以打开 CrossValidator 的日志记录,因为它会记录所选的最佳参数集
我正在使用 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()
但是,我遇到了异常:
value getRegParam is not a member of org.apache.spark.ml.Model[_]
通常您必须将 bestModel 转换为特定模型,例如ALS模型。 但是 ALSModel class 没有 regParam 字段。不幸的是,我想没有办法提取所选的 regParam,这对 Spark 开发人员来说确实是个问题。
您可以打开 CrossValidator 的日志记录,因为它会记录所选的最佳参数集