2016-09-01 3 views
2

Я использую Scala с Спарком 2.0 для подготовки модели с линейной регрессией.Спарка и продолжить обучение

val lr = new LinearRegression() 
    .setMaxIter(num_iter) 
    .setRegParam(reg) 
    .setStandardization(true) 

val model = lr.fit(data) 

Это нормально работает, и я получаю хорошие результаты. я сохранил модель и загрузить его в другой класс, чтобы сделать некоторые прогнозы:

val model = LinearRegressionModel.load("models/LRModel") 
val result = model.transform(data).select("prediction") 

Теперь я хотел продолжить обучение модели с новыми данными, поэтому я сохранил модель и загрузить его, чтобы продолжить обучение.

Экономия:

model.save("models/LRModel") 
lr.save("models/LR") 

Загрузка:

val lr = LinearRegression.load("models/LR") 
val model = LinearRegressionModel.load("models/LRModel") 

Проблема в том, когда я загружаю модель, не существует fit или train функция для продолжения обучения. Когда я загружаю объект LinearRegression, кажется, что он не сохраняет весы, а только параметры для алгоритма. Я тестировал его, обучая одни и те же данные за одинаковое количество итераций, и результат был таким же rootMeanSquaredError, и он определенно не сходился на этом этапе обучения. Я также не могу загрузить модель в линейную регрессию, это приводит к ошибке:

Exception in thread "main" java.lang.NoSuchMethodException: org.apache.spark.ml.regression.LinearRegressionModel.<init>(java.lang.String) 

Таким образом, вопрос, как я могу получить объект, чтобы линейная регрессии использовать сохраненный LinearRegressionModel?

ответ