作为统计人员,Spark ML库中Param
和Params
类的逻辑让我很困惑。由于基础课PipelineStage extends Params
和transformer/estimator
(这意味着我的机器学习算法)是PipelineStage
的子类。那么Params
不只是一个代表一些机器学习参数的简单类吗?在管道中访问某些参数需要父母一定的要求。我对如何出现感到很失落......
Param的任何合理解释?非常感谢!这真让我困惑。
答案 0 :(得分:0)
我也对这两个概念感到困惑。以下是我对这两个的理解:
Param
位于包含scala.annotation.meta
Annotation
包中
Params
位于org.apache.spark.ml.param
包中,即
获取参数的组件的特征。这也提供了一个 内部参数映射,用于存储附加到实例的参数值。
虽然Params
是使用DeveloperApi的界面,但您可以使用
/**
* :: DeveloperApi ::
* A param with self-contained documentation and optionally default value. Primitive-typed param
* should use the specialized versions, which are more friendly to Java users.
*
* @param parent parent object
* @param name param name
* @param doc documentation
* @param isValid optional validation method which indicates if a value is valid.
* See [[ParamValidators]] for factory methods for common validation functions.
* @tparam T param value type
*/
class Param[T](val parent: String, val name: String, val doc: String, val isValid: T => Boolean)
extends Serializable