С Scala mllib Как использовать только часть функций при прогнозировании линейной регрессии? - PullRequest
0 голосов
/ 04 августа 2020

Можно ли каким-либо образом делать предсказания с помощью изученной модели, используя только подмножество функций, которые использовались при обучении? Например, изученная функция с f (x1, x2, x3) = y = b1x1 + b2x2 + b3x3 + e; затем сделайте прогноз только с b1x1 + b2x2, отказавшись от функции x3.

Я пробовал:

Для обучения модели:

val featureAssembler = new VectorAssembler().
      setInputCols(Array("X1", "X2", "X3")).
      setOutputCol("features")
val lr = new LinearRegression().setLabelCol("y").setFeaturesCol("features")
val pipeline = new Pipeline().setStages(Array(featuerAssembler, lr))

val model = pipeline.fit(trainingData) 

Для проверки с подмножеством функций:

val featureAssemblerValidation = new VectorAssembler().
      setInputCols(Array( "X1", "X2")).
      setOutputCol("features")
val pipelineValidation = new Pipeline().setStages(Array(featureAssemblerValidation))

val validationData = pipelineValidation.fit(testData).transform(testData)

val lrModel = model.stages.last.asInstanceOf[LinearRegressionModel]

val validationA = lrModel.transform(validationData)

но есть ошибка:

Caused by: java.lang.IllegalArgumentException: requirement failed: BLAS.dot(x: Vector, y:Vector) was given Vectors with non-matching sizes: x.size = 181, y.size = 587

что понятно; модели по-прежнему нужна та же форма, но после создания подмножества я подгоняю ее под другую форму.

...