首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mlr3:如何在训练数据集上使用mlr进行过滤,并将结果应用于模型训练?

mlr3:如何在训练数据集上使用mlr进行过滤,并将结果应用于模型训练?
EN

Stack Overflow用户
提问于 2020-08-22 01:37:04
回答 1查看 141关注 0票数 0

在mlr3中创建过滤器时,如何仅基于训练数据创建过滤器?

创建过滤器后,如何将过滤器应用于建模过程,并将训练数据子集设置为仅包括高于某个阈值的过滤器值?

代码语言:javascript
复制
library(mlr3)
library(mlr3filters)
library(mlr3learners)
library(tidyverse)


data(iris)
iris <- iris %>%
  select(-Species)
  
tsk <- mlr3::TaskRegr$new("iris", 
                          backend = iris, 
                          target = "Sepal.Length")

#split train and test
trn_ids <- sample(tsk$row_ids, floor(0.8 * length(tsk$row_ids)), F)
tst_ids <- setdiff(tsk$row_ids, trn_ids)

#create a filter
filter = flt("correlation", method = "spearman")

# Question 1: how to calculate the filter only for the train IDs?
filter$calculate(tsk)
print(filter)

# Question 2: how to only use only variables with X correlation or greater in training?
learner <- mlr_learners$get("regr.glmnet")
learner$train(tsk, row_ids = trn_ids)
prediction <- learner$predict(tsk, row_ids = tst_ids)
prediction$response
EN

回答 1

Stack Overflow用户

发布于 2020-08-22 01:51:26

可以使用mlr3pipelines将过滤器封装到Learner中。

mlr3gallery有一个示例here (“功能过滤”一节)。

基本方法是创建一个图表,如下所示:

fpipe = po("filter", flt("mim"), filter.nfeat = 3) $>>$ lrn("regr.glmnet")

并将其封装在GraphLearner

lrnr = GraphLearner$new(fpipe)

lrnr现在可以像任何其他学习者一样使用,并在训练学习者之前根据指定的过滤器在内部过滤功能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63527588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档