Как получить значение regSaram ALS CrossMalidator bestModel?

Я тренирую модель ALS с помощью CrossValidator:

  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]

1 ответ

Решение

Обычно вы должны привести BestModel к конкретной модели, например, ALSModel. Но класс ALSModel не имеет поля regParam. К сожалению, я думаю, что нет никакого способа извлечь выбранный regParam, и это действительно вопрос для разработчиков Spark.

Вы можете включить ведение журнала для CrossValidator, так как он регистрирует выбранный лучший набор параметров

Другие вопросы по тегам