У меня есть несколько вопросов по использованию mlr3-pipelines. На самом деле, моя цель - создать конвейер, который объединяет три 3 графика:
1 - График для обработки категориальных переменных: вменение уровня => стандартизация
imp_cat = po("imputenewlvl", param_vals =list(affect_columns = selector_name(my_cat_variables)))
encode = po("encode", param_vals =list(affect_columns = selector_name(my_cat_variables)))
cat = imp_cat %>>% encode
2 - График для обработки подмножества числовых переменных: среднее вменение => стандартизация
imp_mean = po("imputemean", param_vals = list(affect_columns =selector_name(my_first_set_of_numeric_variables)))
scale = po("scale", param_vals = list(affect_columns = selector_name(my_first_set_of_numeric_variables)))
num_mean = imp_mean %>>% scale
Третий график для обработки другого подмножества числовых переменных: вмененное медианное значение => минимальное максимальное масштабирование
imp_median = po("imputemedian", param_vals = list(affect_columns =selector_name(my_second_set_of_numeric_variables)))
min_max = po("scalerange", param_vals = list(affect_columns = selector_name(my_second_set_of_numeric_variables)))
num_median = imp_median %>>% min_max
объедините эти графики с помощью featureUnion Ops:
graph = po("copy", 3) %>>%
gunion(list(cat, num_mean, num_median )) %>>%
po("featureunion")
и, наконец, добавьте учащегося в GraphLearner:
g1 = GraphLearner$new(graph %>>% po(lrn("classif.ranger")))
У меня есть некоторые пропущенные значения в моих данных, поэтому я использую импортеры в каждом графике, и у меня есть задача двоичной классификации.
my_task = TaskClassif$new(id="classif", backend = data, target = "my_target")
Теоретически, когда я начинаю учиться, у меня не должно быть ошибок из-за пропущенных значений.
g1$train(my_task)
но у меня есть несколько ошибок в зависимости от того, кого я выбираю. Если я использую, например, рейнджера в качестве ученика: у меня есть эта ошибка
Error: Missing data in columns: ....
если я использую svm, glmnet или xgvoost: у меня проблема из-за существования категориальных переменных. Error : has the following unsupported feature types: factor...
В моем конвейере у меня не должно быть категориальной переменной и отсутствующих значений. так что я не вижу, как побороть эту проблему.
1 - Я использовал импьютер на каждом графике, почему некоторые алгоритмы говорят мне, что всегда есть пропущенные значения?
2 - Как мне удалить категориальные переменные после кодирования? некоторые алгоритмы не поддерживают этот тип переменных
Обновлено
Я думаю, что все изменения, внесенные в ходе конвейера, не сохранятся. Другими словами, алгоритмы (svm, ranger, ...) делают поезд на исходной задаче, а не на той, которая обновляется конвейером.