2016-08-02 92 views
1

的問題是關於 Logistic regression with spark ml (data frames)在Spark ML中將Python轉換爲Scala?

當我想要的代碼的Python改爲斯卡拉

的Python:

[stage.coefficients for stage in model.stages 
    if isinstance(stage, LogisticRegressionModel)] 

斯卡拉:(改變)

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"

我只檢查階段,它將返回

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

爲什麼類型是當isInstanceOf返回true不同?我該怎麼辦?謝謝

回答

2

當isInstanceOf返回true時,爲什麼類型不同?

嘛,Scala是一種靜態類型語言,stagesArray[Transformer]所以每次訪問元素是TransformerTransformers一般沒有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

相關問題