2017-12-07 13 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 : DR 사용 LogisticRegressionModel.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")