Как отфильтровать набор данных задачи mlr3 по значению функции
У меня есть задача mlr3, где у меня есть такой набор данных:
Набор данных "все"
all <- data.frame(v1 = c("a", "b"),
v2 = c(1, 2),
data = c("test", "train"))
library(mlr3)
task <- TaskClassif$new("loan", all, target = "v1")
Как отфильтровать задачу по столбцу "данные", значению "поезд"?
Я пробовал task$filter(data == "train") и множество других комбинаций, но не работает.
dput(task)
<environment>
str(task)
Classes 'TaskClassif', 'TaskSupervised', 'Task', 'R6' <TaskClassif:loan>
1 ответ
Решение
E сть as.data.table
метод
methods(class = 'Task')
#[1] as_task as_tasks as.data.table
Итак, мы можем преобразовать его в data.table
и используйте методы data.table для подмножества
library(data.table)
as.data.table(task)[data == 'train']
# v1 data v2
#1: b train 2
Или можно извлечь data
task$data()[data == 'test']
# v1 data v2
#1: a test 1
Или создайте новый экземпляр
tasktrain <- TaskClassif$new("loantrain",
task$data()[data == 'train'], target = "v1")
tasktrain$data()
# v1 data v2
#1: b train 2