"generateFilterValuesData"是"mlr"包的一个函数,该包使用各种算法进行功能选择。我想以迭代的方式将不同的算法应用于相同的数据,以检查不同方法选择的不同特征。为此,原则上我应该对相同的数据应用相同的函数,同时改变"方法"参数(大约15个可能的值(。我在这里提供了一个可复制的例子(我没有使用set.seed((,因为数值本身是不相关的(:
feature_A <- rnorm(200, 5, 2)
feature_B <- rnorm(200, 3, 2)
feature_C <- rnorm(200, 3.7, 1.3)
feature_D <- runif(200)
feature_E <- rpois(200, 1.6)
feature_F <- rpois (200, 7.3)
feature_G <- rlogis(200)
feature_H <- rexp(200, 2)
feature_I <- rexp (200, 3)
test_activ <- as.factor(rbinom(200, 1, 0.5))
df <- data.frame(feature_A, feature_B, feature_C, feature_D,
feature_E, feature_F, feature_G, feature_H,
feature_I, test_activ)
library(mlr)
taskg <- makeClassifTask(data = df, target="test_activ")
fv <- generateFilterValuesData(task, method = c("anova.test"))
methods <- c("anova.test", "auc", "cforest.importance","chi.squared", "gain.ratio", "information.gain",
"kruskal.test", "oneR", "permutation.importance",
"randomForest.importance", "randomForestSRC.rfsrc",
"randomForestSRC.var.select", "ranger.impurity",
"ranger.permutation", "relief", "symmetrical.uncertainty",
"univariate.model.score", "variance")
我想在taskg任务上迭代应用函数"generateFilterValuesData",改变方法(即迭代18个方法(。我尝试了以下的lapply:
lapply (methods, generateFilterValuesData, taskg),
但我得到了以下错误:"lapply中的错误(methods,generateFilterValuesData,taskg(:断言失败。必须适用以下其中一项:*checkClass(task(:必须具有类"ClassifTask",但具有类*'字符'*checkClass(任务(:必须具有类"RegrTask",但具有类"character"*checkClass(任务(:必须具有类"SurvTask",但具有类"character">
我意识到我做错了什么,但我无法找到如何在"方法"向量上执行此迭代(因为此向量包含相同参数的不同值,而不是要应用函数的数据(。
我想你可能正在寻找这个(基于你的fv
任务(。
lapply(methods, function(m) generateFilterValuesData(taskg, method = m))
进行时
lapply (methods, generateFilterValuesData, taskg)
争论正在发生变化。例如,如果你进行,你会得到同样的错误
generateFilterValuesData(methods[1], taskg)