在mlr包中传递特征选择的数据类型参数

时间:2018-05-10 04:42:44

标签: r feature-selection mlr

我刚刚开始尝试使用mlr软件包,我喜欢训练模型的简易性以及它可以做的所有其他事情。

但是,我被困在feature selection部分,这是此代码的最后一部分。我打算做的是将variance方法应用于generateFilterValuesData(),我知道方差只能应用于数值,因此我试图探索是否有inbuilt parameter可以允许数据按数据类型进行子集化,然后可以将该函数应用于下面的任务。

library(data.table)
library(dplyr)
library(mlr)

data(BreastCancer, package = "mlbench")
df = BreastCancer

df$Id = NULL #unimportant feature
names(df) <- tolower(names(df))

cols = c(1:5)
df[,cols] = sapply(cols, function(x){df[,x] = as.integer(df[,x])})
glimpse(df)


classif.task= makeClassifTask(id = 'BreastCancer',data = df,
                              target = 'class')
#task is created
classif.task


#imputation
imp = impute(classif.task,cols = list(bare.nuclei = imputeMode()))

#feature importance
feature.imp = generateFilterValuesData(task = imp$task,
                          method = c('variance'))

1 个答案:

答案 0 :(得分:0)

您可以使用subsetTask执行此操作,例如

subsetTask(iris.task, sapply(getTaskData(iris.task), is.numeric))