Я использую 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?