Как вменять данные с помощью mlr3 и прогнозировать с помощью значений NA? - PullRequest
1 голос
/ 03 марта 2020

Я следовал документации мл3 в отношении вменения данных с конвейерами. Тем не менее, режим, который я обучил, не позволяет делать прогнозы, если один столбец равен NA

У вас есть идеи, почему он не работает?

step train

library(mlr3)
library(mlr3learners)
library(mlr3pipelines)


data("mtcars", package = "datasets")
data = mtcars[, 1:3]
str(data)
task_mtcars = TaskRegr$new(id="cars", backend = data, target = "mpg")


imp_missind = po("missind")
imp_num     = po("imputehist", param_vals =list(affect_columns = selector_type("numeric")))
scale = po("scale")
learner = lrn('regr.ranger')

graph = po("copy", 2) %>>% 
  gunion(list(imp_num %>>% scale,imp_missind)) %>>%
  po("featureunion") %>>%
  po(learner)
graph$plot()

graphlearner = GraphLearner$new(graph)

прогнозировать шаг

data = task_mtcars$data()[12:12,]
data[1:1, cyl:=NA]
predict(graphlearner, data)

Ошибка

Error: Missing data in columns: cyl.

1 Ответ

3 голосов
/ 04 марта 2020

Пример в mlr3gallery , кажется, работает для вашего случая, поэтому вам, в основном, нужно переключить порядок imputehist и missind.

Другой подход - установить which гиперпараметр missind для "all", чтобы обеспечить создание индикатора для каждого столбца.

На самом деле это ошибка, при которой missind возвращает полное задание, если оно обучено на данных без пропусков (который, в свою очередь, затем перезаписывает вмененные значения). Большое спасибо за то, что заметили это. Я пытаюсь исправить это здесь PR

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