R mehrere randomForest-Objekte in einem vector
Ich bin gespannt, ob R hat die Fähigkeit, Objekte in Vektoren/Listen/arrays/etc. Ich bin mit dem randomforest-Paket arbeiten, auf Teilmengen von einem größeren Stück von Daten und speichern möchten, jede version in einer Liste. Es wäre ähnlich wie diese:
answers <- c()
for(i in 1:10){
x <- round((1/i), 3)
answers <- (rbind(answers, x))
}
Idealerweise würde ich gerne etwas wie das hier tun:
answers <- c()
for(i in 1:10){
RF <- randomForest(training, training$data1, sampsize=c(100), do.trace=TRUE, importance=TRUE, ntree=50,,forest=TRUE)
answers <- (rbind(answers, RF))
}
Diese Art von Werken, sondern hier ist die Ausgabe für einen einzelnen RF-Objekt:
> RF
Call:
randomForest(x = training, y = training$data1, ntree = 50, sampsize = c(100), importance = TRUE, do.trace = TRUE, forest = TRUE)
Type of random forest: regression
Number of trees: 10
No. of variables tried at each split: 2
Mean of squared residuals: 0.05343956
% Var explained: 14.32
Zwar ist dies das aus für die 'Antworten' - Liste:
> answers
call type predicted mse rsq oob.times importance importanceSD
RF Expression "regression" Numeric,150000 Numeric,10 Numeric,10 Integer,150000 Numeric,16 Numeric,8
RF Expression "regression" Numeric,150000 Numeric,10 Numeric,10 Integer,150000 Numeric,16 Numeric,8
RF Expression "regression" Numeric,150000 Numeric,10 Numeric,10 Integer,150000 Numeric,16 Numeric,8
RF Expression "regression" Numeric,150000 Numeric,10 Numeric,10 Integer,150000 Numeric,16 Numeric,8
RF Expression "regression" Numeric,150000 Numeric,10 Numeric,10 Integer,150000 Numeric,16 Numeric,8
RF Expression "regression" Numeric,150000 Numeric,10 Numeric,10 Integer,150000 Numeric,16 Numeric,8
RF Expression "regression" Numeric,150000 Numeric,10 Numeric,10 Integer,150000 Numeric,16 Numeric,8
RF Expression "regression" Numeric,150000 Numeric,10 Numeric,10 Integer,150000 Numeric,16 Numeric,8
RF Expression "regression" Numeric,150000 Numeric,10 Numeric,10 Integer,150000 Numeric,16 Numeric,8
RF Expression "regression" Numeric,150000 Numeric,10 Numeric,10 Integer,150000 Numeric,16 Numeric,8
localImportance proximity ntree mtry forest coefs y test inbag
RF NULL NULL 10 2 List,11 NULL Integer,150000 NULL NULL
RF NULL NULL 10 2 List,11 NULL Integer,150000 NULL NULL
RF NULL NULL 10 2 List,11 NULL Integer,150000 NULL NULL
RF NULL NULL 10 2 List,11 NULL Integer,150000 NULL NULL
RF NULL NULL 10 2 List,11 NULL Integer,150000 NULL NULL
RF NULL NULL 10 2 List,11 NULL Integer,150000 NULL NULL
RF NULL NULL 10 2 List,11 NULL Integer,150000 NULL NULL
RF NULL NULL 10 2 List,11 NULL Integer,150000 NULL NULL
RF NULL NULL 10 2 List,11 NULL Integer,150000 NULL NULL
RF NULL NULL 10 2 List,11 NULL Integer,150000 NULL NULL
Weiß jemand, wie man speichern alle HF-Objekte oder rufen Sie diese so, dass die info gespeichert werden, ist die gleiche wie eine einzelne RF-Objekt? Vielen Dank für die Anregungen.
InformationsquelleAutor screechOwl | 2011-10-19
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht wachsen, Vektoren oder Listen, die ein element zu einem Zeitpunkt. Pre-zuordnen und die Zuordnung von Objekten zu bestimmten teilen:
Als seitliche Anmerkung, die
rbind
ing Vektoren nicht schaffen, einen anderen Vektor oder Liste, wenn Sie Ihre Ausgabe in Ihrem ersten Beispiel sehen Sie, dass es ist eine matrix mit einer Spalte. Das erklärt das seltsame Verhalten, das Sie beobachten, wenn Sie versuchen zurbind
randomForest-Objekte zusammen.Verwenden
lapply
:Erhalten Sie eine Liste der random forest-Objekte; Sie können Sie dann auf die i-te mit
[[]]
Betreiber.Initialisiert eine Liste mit:
Fügen Sie es mit:
@joran Beratung über die vor-Zuweisung ist von Bedeutung, wenn die Listen sind groß, aber nicht völlig notwendig, wenn Sie klein sind. Sie hätten auch Zugriff auf die matrix, die Sie bauen, in deinem original-code. Es sieht schon etwas seltsam aus, aber die information ist alles drin. Zum Beispiel das erste element der matrix von Listen hätte wieder mit:
Andere Antworten Lösungen zum speichern von random forest Objekte in einer
list
, aber Sie nicht erklären, warum Sie arbeiten.Als @ - 42 - Hinweise, ist dies nicht der pre-allocation Schritt, löst das Problem hier.
Das eigentliche problem ist, dass ein
randomForest
Objekt ist grundsätzlich einlist
(checkis.list(randomForest(...)
). Wenn Sie eine Anweisung schreiben, wie:werden Sie im wesentlichen zu Fragen, zu verketten, um ein leeres Objekt mit einer Liste. Statt, resultierend in einer Liste der Länge 1 (random forest Modell), diese Anweisung führt eine Liste mit allen random forest Modell Komponenten! Sie können dies überprüfen, indem Sie in Sie die R-Konsole:
Gibt es mehrere Möglichkeiten, um Kraft R, um den Vorgang durchzuführen, die Sie möchten:
explizite Zuordnung in der Liste ist (vgl @joran Antwort, obwohl es keine Notwendigkeit, pre-allocate):
lassen
lapply
(oder ähnlich) die Liste erstellen (vgl @mbq Antwort):Kapseln random forest in einer Liste, die vereinfacht werden, während die Verkettung:
Schließlich, wenn Sie einen Fehler gemacht und nicht Ihr randomForest-Modell, das dauerte 10 Stunden berechnet werden, nicht Schwitzen, können Sie immer noch wiederherstellen wie folgt: