如何通过特征值过滤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>

解决方法

有一种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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...