2016-08-02 4 views
1

質問について Logistic regression with spark ml (data frames)Spark MLでPythonをScalaに変換するには?

私はスカラ座

にコードの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"と言います。 isInstanceOfがtrueを返したときにタイプが異なるのはなぜ

私だけのステージをチェックし、それが

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

を返すのだろうか?私は何をすべきか?ありがとう

答えて

2

isInstanceOfがtrueを返すときに型が異なるのはなぜですか?

さて、Scalaは静的型付け言語であり、stagesArray[Transformer]あるので、あなたがアクセスした各要素がTransformerです。 Transformersは一般にcoefficientsを持たないため、エラーです。

どうすればよいですか?

タイプについて具体的にしてください。

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

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

ありがとうございます。私はもう1つの質問をしたい。それは何人かを返します。 SomeをArrayに変換するにはどうすればよいですか? –

+0

'Option [o.a.s.mllib.linalg.Vector]'を返します。必要な段階が存在することが確かであれば、単に 'head'(' headOption'の代わりに)を使うことができ、 'o.a.s.mllib.linalg.Vector'は' toArray'メソッドを持っています。 – zero323

関連する問題