Получение BinaryLogisticRegressionSummary из выходных данных модели конвейера в Spark 2.2.0 - PullRequest
0 голосов
/ 04 мая 2020

Ранее я работал с моделью регрессии logisti c в Spark 2.2.0, и, вызвав метод evaluate() модели для некоторых помеченных тестовых данных, я смог получить объект BinaryLogisticRegressionSummary, который затем использовал для некоторые последующие задачи.

Теперь я работаю с PipelineModel, где последний этап - регрессионная модель логистики c. Проблема в том, что PipelineModel не имеет метода evaluate, у него есть только метод transform, который выводит фрейм данных, содержащий прогнозы и метки. Есть ли способ получить объект BinaryLogisticRegressionSummary из вывода метода преобразования PipelineModel или любым другим способом, используя PipelineModel?

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Я нашел один способ сделать это. Я в основном вручную преобразовываю все преобразования вплоть до модели. Затем я извлекаю последний этап модели и вызываю метод оценки для выходных данных последнего этапа вывода.

val plModel = loadModel

// iterate through all stages except last to get transformed features
val transformedFeatures = (inputDf /: plModel.stages.dropRight(1)) {
  case (acc, stage) => stage.transform(acc)
}

// extract model from last stage
val lrModel =
  plModel
    .stages
    .last
    .asInstanceOf[LogisticRegressionModel]

lrModel
  .evaluate(transformedFeatures)
  .asInstanceOf[BinaryLogisticRegressionSummary]
0 голосов
/ 04 мая 2020

Поскольку вы знаете, что последним этапом PipelineModel является модель LogisticRegressionModel, которую вы хотите оценить, попробуйте использовать что-то вроде lr = thePipelineModel.stages[-1], чтобы получить ссылку (как вы ожидаете, будет) на правильный объект, и оценить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...