2017-12-07 9 views
2

JavaでApache Sparkを使用してロジスティック回帰モデルを訓練したいと思います。最初のステップとして、モデルをただ一回訓練し、モデルパラメータ(切片と係数)を保存したいと思います。その後、保存されたモデルパラメータを使用して、後の時点で得点を付けます。私は得点にモデルをロードすると、私は次のエラーを取得するロジスティック回帰モデルを読み込むには?

LogisticRegressionModel trainedLRModel = logReg.fit(data); 
trainedLRModel.write().overwrite().save("mypath"); 

次のコードを使用して、寄木細工のファイルにモデルを保存することができています。

LogisticRegression lr = new LogisticRegression(); 
lr.load("//saved_model_path"); 

Exception in thread "main" java.lang.NoSuchMethodException: org.apache.spark.ml.classification.LogisticRegressionModel.<init>(java.lang.String) 
    at java.lang.Class.getConstructor0(Class.java:3082) 
    at java.lang.Class.getConstructor(Class.java:1825) 
    at org.apache.spark.ml.util.DefaultParamsReader.load(ReadWrite.scala:325) 
    at org.apache.spark.ml.util.MLReadable$class.load(ReadWrite.scala:215) 
    at org.apache.spark.ml.classification.LogisticRegression$.load(LogisticRegression.scala:672) 
    at org.apache.spark.ml.classification.LogisticRegression.load(LogisticRegression.scala) 

後に(スコア)を訓練し、モデルを保存して評価する方法はありますか?私はJavaでSpark ML 2.1.0を使用しています。

答えて

0

TL; DRLogisticRegressionModel.loadを使用してください。

負荷(パス:文字列):LogisticRegressionModelは、入力経路からread.load(パス)のショートカットをMLインスタンスを読み込み。実際のところ


、スパーク2.0.0、スパークMLlib、税込を使用するために推奨されるアプローチのよう。 LogisticRegression見積もり、新品と光沢のあるPipeline APIを使用しています。

import org.apache.spark.ml.classification._ 
val lr = new LogisticRegression() 

import org.apache.spark.ml.feature._ 
val tok = new Tokenizer().setInputCol("body") 
val hashTF = new HashingTF().setInputCol(tok.getOutputCol).setOutputCol("features") 

import org.apache.spark.ml._ 
val pipeline = new Pipeline().setStages(Array(tok, hashTF, lr)) 

// training dataset 
val emails = Seq(("hello world", 1)).toDF("body", "label") 

val model = pipeline.fit(emails) 

model.write.overwrite.save("mypath") 
val loadedModel = PipelineModel.load("mypath") 
関連する問題