2

我想在 Scala 中声明方法,该方法将具有来自 Spark MLlib 的 ProbabilisticClassifer 类型的参数。这是来自 github 的签名(https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/ml/classification/ProbabilisticClassifier.scala):

   abstract class ProbabilisticClassificationModel[
    FeaturesType,
    M <: ProbabilisticClassificationModel[FeaturesType, M]]
  extends ClassificationModel[FeaturesType, M] with ProbabilisticClassifierParams

换句话说,我希望该参数能够预测类别概率。目的是有机会将不同的概率分类器(逻辑回归、随机森林等)传递给该方法。

因此,如果我将此方法声明为

  def method[
    FeaturesType,
    M <: ProbabilisticClassificationModel[FeaturesType, M]
  ] (c: ProbabilisticClassificationModel[FeatureType, M]): M = {...}

...我们将被禁止调用没有模板规范的方法。IE

 var x = method(RandomF);

不会工作。相反,我们应该写

 var x = method[Vector, RandomForestClassificationModel](RandomF);

有没有办法定义这个方法来避免它是每个调用规范?

4

0 回答 0