Я использую Spark (ядро и Mllib) версии 2.2.0 с Scala.
Я успешно сохранил модель CrossValidator с логистической регрессией. Ниже приведен код, который я использовал
val cv = new CrossValidator()
.setEstimator(lr)
.setEvaluator(new BinaryClassificationEvaluator)
.setEstimatorParamMaps(paramGrid)
.setNumFolds(5)
val model = cv.fit(trainingData)
model.write.overwrite().save("./cvmodel")
После этого я пытаюсь использовать его для другого набора данных с кодом ниже
val model = CrossValidatorModel.read.load("./cvmodel")
val cleanData = DataApi.cleanData(dataset, spark) // custom method
val preparedData = DataApi.oneHotEncodingData(cleanData).select("label","features") // custom method
val predict_dataset = model.transform(preparedData)
printResult(predict_dataset) // A custom method that uses metrics to print the statistics
// of the result
Однако при использовании наборов данных разных размеровпо сравнению с тестовыми данными (более или менее), я получаю эту ошибку
java.lang.IllegalArgumentException: requirement failed: BLAS.dot(x: Vector, y:Vector) was given Vectors with non-matching sizes: x.size = 1178, y.size = 9921
Код фактически работает с набором данных того же размера. Поэтому я хотел бы знать, возможно ли использовать сохраненную модель с другим набором данных другого размера без необходимости повторного подгонки. Если это так, я хотел бы знать, как.
Спасибо за вашу помощь.