我想在 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);
有没有办法定义这个方法来避免它是每个调用规范?