Как получить значение 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, так как он регистрирует выбранный лучший набор параметров