Параметры Spark ML не определяют сеттеры - почему? - PullRequest
0 голосов
/ 22 декабря 2018

Я заметил, что большинство (или все) черты Spark ML, расширяющие Params, подобно HasRegParam или вообще Has<whatever>Param, не определяют сеттеры, но они определяют геттеры.См .:

https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/ml/param/shared/sharedParams.scala

Установщики обычно определяются подклассами расширяющих их моделей ML, такими как LinearRegression и так далее.Иногда это означает определение одного и того же установщика снова в нескольких классах, потому что несколько моделей имеют параметр регуляризации (например).

В чем причина этого вместо определения сеттеров (например, setRegParam) в каждом из подклассов Params (например, в признаке HasRegParam)?Я подозреваю, что это из-за типа возвращаемого значения сеттеров, this.type, который разрешает цепочечные вызовы при установке нескольких параметров модели ML.Я не пробовал сам, но, возможно, this.type не работает должным образом с цепочечными вызовами, если он определен только один раз в признаке Params вместо каждого конкретного класса модели?

Есть ли более чистый способ избежать переопределения сеттера при реализации моих собственных черт Params?

Спасибо

...