Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mlr3中,如何根据指标列和批量训练预测对任务进行子集? 背景_R_Machine Learning_Batch Processing_Mlr3 - Fatal编程技术网

在mlr3中,如何根据指标列和批量训练预测对任务进行子集? 背景

在mlr3中,如何根据指标列和批量训练预测对任务进行子集? 背景,r,machine-learning,batch-processing,mlr3,R,Machine Learning,Batch Processing,Mlr3,我正在用R中的mlr3包进行建模和预测。我正在使用一个由测试集和训练集组成的大数据集。测试和列车组由指示器列指示(代码:Test_或Test_train) 目标 使用数据集中的“训练”或“测试”列指示的训练行对所有学习者进行批量训练 与各自的受训学员一起,批量预测“测试”或“训练”列中“测试”指定的行 代码 带有测试列指示器列的支架数据集。(在实际数据中,列车测试拆分不是人工的) 两个任务(在实际代码中,任务是不同的,而且还有更多) 库(readr) 图书馆(mlr3) 图书馆(MLR3学习者)

我正在用R中的mlr3包进行建模和预测。我正在使用一个由测试集和训练集组成的大数据集。测试和列车组由指示器列指示(代码:Test_或Test_train)

目标
  • 使用数据集中的“训练”或“测试”列指示的训练行对所有学习者进行批量训练
  • 与各自的受训学员一起,批量预测“测试”或“训练”列中“测试”指定的行
  • 代码
  • 带有测试列指示器列的支架数据集。(在实际数据中,列车测试拆分不是人工的)
  • 两个任务(在实际代码中,任务是不同的,而且还有更多)
  • 库(readr)
    图书馆(mlr3)
    图书馆(MLR3学习者)
    库(MLR3管道)
    图书馆(reprex)
    图书馆(插入符号)
    #资料
    urlfile=https://raw.githubusercontent.com/shudras/office_data/master/office_data.csv'
    数据=读取csv(url(url文件))[-1]
    ##创建人工分区以测试和训练集合
    art_part=createDataPartition(数据$imdb_评级,列表=FALSE)
    列车=数据[艺术部分]
    测试=数据[-艺术部分,]
    ##添加测试列指示器
    列车$test\u或列车=‘列车’
    测试$test\u或列车='test'
    ##我想使用/正在使用的数据集
    数据=rbind(测试,列车)
    #创建两个任务(此处任务相同,但在我的数据集中任务不同。)
    任务1=
    TaskRegr$新(
    id='office1',
    后端=数据,
    目标='imdb_评级'
    )
    任务2=
    TaskRegr$新(
    id='office2',
    后端=数据,
    目标='imdb_评级'
    )
    #型号规格
    图=
    采购订单(‘比例’)%%>%
    lrn('regr.cv_glmnet',
    id='rp',
    α=1,
    族='高斯'
    ) 
    #学习者创造
    学习者=图形学习者$new(图形)
    #目标
    ## 1. 使用数据集中的“训练”或“测试”列指示的训练行对所有学习者进行批量训练
    ## 2. 与相应的受训学员一起,批量预测“测试”或“训练”列中“测试”指定的行
    
    由(v0.3.0)于2020年6月22日创建

    注 我尝试使用带有行ID的基准网格来只训练学习者使用列行,但这不起作用,而且使用列指示符也不可能比使用行索引容易得多。使用列测试序列指示符,可以使用一条规则(用于拆分),而使用行索引仅在任务包含相同行时有效

    基准网格( 任务=列表(任务1、任务2), 学习者=学习者, row_id=train_rows#不是参数,也不利于使用索引 )
    您可以将
    基准测试
    与自定义设计一起使用

    下面应该做这项工作(注意,我分别为每个
    任务
    实例化了一个自定义
    重采样

    library(data.table)
    design = data.table(
      task = list(task1, task2),
      learner = list(learner)
    )
    
    library(mlr3misc)
    design$resampling = map(design$task, function(x) {
      # get train/test split
      split = x$data()[["test_or_train"]]
      # remove train-test split column from the task
      x$select(setdiff(x$feature_names, "test_or_train"))
      # instantiate a custom resampling with the given split
      rsmp("custom")$instantiate(x,
        train_sets = list(which(split == "train")),
        test_sets = list(which(split == "test"))
      )
    })
    
    benchmark(design)
    
    您能否更清楚地说明批处理的含义,或者这是否回答了您的问题