2016-08-02 4 views
1

문제는Spark ML에서 파이썬을 스칼라로 변환 하시겠습니까?</p> <pre><code>[stage.coefficients for stage in model.stages if isinstance(stage, LogisticRegressionModel)] </code></pre> <p>스칼라 : 나는 스칼라에 코드를 파이썬을 변경하려면

파이썬에 대한 Logistic regression with spark ml (data frames)

입니다 (변경)

for (stage<-model.stages){ 
     if(stage.isInstanceOf[LogisticRegressionModel]{ 
      val a = Array(stage.coefficients) 
    }} 

나는 이미 stage.isInstanceOf[LogisticRegressionModel]을 확인하면 True를 반환합니다. 그러나 stage.coefficients 오류 메시지가 있습니다. 그것은 "value coefficients is not a member of org.apache.spark.ml.Transformer"라고합니다. 유형이 isInstanceOf가 true를 돌려주는 경우 다른 이유

난 단지 무대를 확인, 그것은

org.apache.spark.ml.Transformer= logreg 382456482 

를 반환합니다? 어떻게해야합니까? 감사합니다

답변

2

왜 isInstanceOf가 true를 반환 할 때 유형이 다른가요?

음, 스칼라는 정적으로 입력 된 언어이며 stagesArray[Transformer] 그래서 액세스하는 각 요소가 Transformer입니다. 일반적으로 Transformers에는 coefficients이 없으므로 오류가 발생합니다.

어떻게해야합니까?

유형에 대해 구체적으로 설명하십시오.

import org.apache.spark.ml.classification.LogisticRegressionModel 

model.stages.collect { 
    case lr: LogisticRegressionModel => lr.coefficients 
}.headOption 
+0

감사합니다. 나는 하나 더 질문하고 싶다. 일부를 돌려줍니다. 일부를 배열로 변환하려면 어떻게해야합니까? –

+0

'Option [o.a.s.mllib.linalg.Vector]'를 반환합니다. 필요한 단계가 존재한다고 확신한다면'head' ('headOption' 대신에)을'o.a.s.mllib.linalg.Vector'에'toArray' 메서드를 사용하면됩니다. – zero323