Ich habe eine Liste Tasche. Es ist das Ergebnis einer Reihe von Regressionsverfahren aus mlr Paket (Pseudo-) Code ist unten gezeigt. Ich möchte die aggregierten Leistungsergebnisse davon für jede Aufgabe extrahieren. Zum Beispiel, wie kann ich auf beide "Aggr. Perf" -Werte von $ visc.1 $ regr.rpart und $ visc.2 $ regr.rpart zugreifen. Ich kann individuell auf sie zugreifen, aber ich denke, dass es einen einfacheren Ansatz geben muss.Ergebnisse aus einer Liste in R
> class(bag)
[1] "list"
-Code Herstellung Beutel (-Datensatz nicht enthalten):
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)
}
Output:
$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
EDIT: Ich habe auch gespeichert dput (Tasche [1: 2]) here.
Bitte verwenden Sie 'dput' ein Smal reproduzierbaren Beispiel zu zeigen – akrun
Sie statt Druck verwenden dput bedeuten Sie? Es produziert viel mehr Ergebnisse. – remo
Da es eine Liste ist, ist es besser, nur ein paar Listenelemente zu haben, d. H. 'Dput (bag [1: 2])' und was Sie extrahieren möchten, d. H. Ihre erwartete Ausgabe. – akrun