【发布时间】:2017-07-07 05:51:38
【问题描述】:
我有一个名为 bag 的列表。它是来自mlr 包(伪)代码的多种回归方法的结果,如下所示。我想从中提取每个任务的聚合性能结果。例如,如何从 $visc.1$regr.rpart 和 $visc.2$regr.rpart 访问“Aggr.perf”值。我可以单独访问它们,但我认为必须有一种更简单的方法。
> class(bag)
[1] "list"
代码生成包(不包括数据集):
library('mlr')
dataset = read.csv("dataset.csv")
regr.task = makeRegrTask(id = "dataset", data = dataset, target = "target")
# feature reduction
fv = generateFilterValuesData(regr.task)
# resampling description
rdesc = makeResampleDesc("Holdout")
####################
bag = NULL
####################
for (i in 1:2)
{
cols = c(order(fv$data$randomForestSRC.rfsrc, decreasing = TRUE)[1:i], ncol(dataset))
dataset.ig = dataset[, cols]
iid = paste(c("dataset", i), collapse = ".")
regr.task = makeRegrTask(id = iid,
data = dataset.ig,
target = "dataset")
# learners
lrns = list(
"regr.bcart"
,"regr.fnn"
,"regr.rpart"
)
set.seed(0, "L'Ecuyer")
bmr = benchmark(lrns, regr.task, rdesc, show.info = FALSE)
#########################
bag = c(bag, bmr)
#########################
}
MWC:
for (i in seq(1,42,3))
{
print (bag[i]$results)
}
输出:
$visc.1
$visc.1$regr.bcart
Resample Result
Task: visc.1
Learner: regr.bcart
Aggr perf: mse.test.mean=5.14e+03
Runtime: 0.181672
$visc.1$regr.cforest
Resample Result
Task: visc.1
Learner: regr.cforest
Aggr perf: mse.test.mean=4.92e+03
Runtime: 0.103091
$visc.1$regr.fnn
Resample Result
Task: visc.1
Learner: regr.fnn
Aggr perf: mse.test.mean=2.44e+03
Runtime: 0.0151947
$visc.1$regr.mars
Resample Result
Task: visc.1
Learner: regr.mars
Aggr perf: mse.test.mean=3.77e+03
Runtime: 0.0163326
$visc.1$regr.rpart
Resample Result
Task: visc.1
Learner: regr.rpart
Aggr perf: mse.test.mean=4.77e+03
Runtime: 0.0265007
$visc.2
$visc.2$regr.bcart
Resample Result
Task: visc.2
Learner: regr.bcart
Aggr perf: mse.test.mean=5.14e+03
Runtime: 0.177014
$visc.2$regr.cforest
Resample Result
Task: visc.2
Learner: regr.cforest
Aggr perf: mse.test.mean=4.95e+03
Runtime: 0.115235
$visc.2$regr.fnn
Resample Result
Task: visc.2
Learner: regr.fnn
Aggr perf: mse.test.mean=3.25e+03
Runtime: 0.0116491
$visc.2$regr.mars
Resample Result
Task: visc.2
Learner: regr.mars
Aggr perf: mse.test.mean=2.67e+03
Runtime: 0.0153017
$visc.2$regr.rpart
Resample Result
Task: visc.2
Learner: regr.rpart
Aggr perf: mse.test.mean=4.77e+03
Runtime: 0.0252295
编辑: 我还保存了 dput(bag[1:2]) here.
【问题讨论】:
-
请使用
dput展示一个可重现的小例子 -
您的意思是使用 dput 而不是 print?它会产生更多的结果。
-
因为它是一个列表,最好只有几个列表元素,即
dput(bag[1:2]),以及你想要提取什么,即你的预期输出 -
好的。我正在制作它。
-
我在这里上传了 dput(bag[1:2]):dropbox.com/s/rpysc4hjg8y8u4d/dput.txt?dl=0
标签: r list machine-learning data-extraction