如何检索 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 的日志记录,因为它会记录所选的最佳参数集