2017-03-26 2 views
-1

한 스파크 견적 도구를 다른 것으로 쉽게 바꿀 수 있기를 원합니다.스칼라에서 일반적인 스파크 견적 도구 사용

def evaluatePrecisionForUser(estimator:Estimator[Model[_]]): Double ={ 
... 
val model = estimator.fit(trainingData) 
... 
} 

여기서 상기 방법으로 전달해야 일반적인 추정을 반환하는 클래스 중 하나입니다 : 나는 일반적인 추정을 사용하는 방법을 만들었습니다

object RandomForestEstimatorBuilder { 
    def build(): Estimator[Model[_]] ={ 
    ... 
    val pipeline = new Pipeline() 
    ... 
    pipeline 
    } 

은 마지막 줄이 오류를 제공합니다 :

Error: type mismatch; found : org.apache.spark.ml.Pipeline required: org.apache.spark.ml.Estimator[org.apache.spark.ml.Model[]] Note: org.apache.spark.ml.PipelineModel <: org.apache.spark.ml.Model[] (and org.apache.spark.ml.Pipeline <: org.apache.spark.ml.Estimator[org.apache.spark.ml.PipelineModel]), but class Estimator is invariant in type M. You may wish to define M as +M instead. (SLS 4.5) pipeline

어떻게 수정 될 수 있습니까?

답변

0

문제가 귀하의 상위 종류의 종류와 관련이없는 것 같습니다.

RandomForestEstimatorBuilderEstimator[Model[_]]을 반환하겠다고 선언했지만 대신 Pipeline을 반환합니다. 선언과 일치 시키려면 Estimator[Model[_]]의 인스턴스를 리턴해야합니다. Spala가 아닌 스칼라 문제이므로 나중에 사용할 evaluatePrecisionForUser 함수와 별개입니다.

+0

힌트를 주셔서 감사합니다! –

관련 문제