Sie können biglm
verwenden, um Ihre Modelle anzupassen, ein biglm
Modellobjekt ist kleiner als ein LM-Modellobjekt. Sie können predict.biglm
verwenden, um eine Funktion zu erstellen, der Sie die Newdata-Entwurfsmatrix übergeben können, die die vorhergesagten Werte zurückgibt.
Eine andere Option ist saveRDS
zu verwenden, um die Dateien zu speichern, die etwas kleiner zu sein scheinen, da sie weniger Aufwand haben, ein einzelnes Objekt, nicht wie Speichern, das mehrere Objekte speichern kann.
library(biglm)
m <- lm(log(Volume)~log(Girth)+log(Height), trees)
mm <- lm(log(Volume)~log(Girth)+log(Height), trees, model = FALSE, x =FALSE, y = FALSE)
bm <- biglm(log(Volume)~log(Girth)+log(Height), trees)
pred <- predict(bm, make.function = TRUE)
save(m, file = 'm.rdata')
save(mm, file = 'mm.rdata')
save(bm, file = 'bm.rdata')
save(pred, file = 'pred.rdata')
saveRDS(m, file = 'm.rds')
saveRDS(mm, file = 'mm.rds')
saveRDS(bm, file = 'bm.rds')
saveRDS(pred, file = 'pred.rds')
file.info(paste(rep(c('m','mm','bm','pred'),each=2) ,c('.rdata','.rds'),sep=''))
# size isdir mode mtime ctime atime exe
# m.rdata 2806 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:24:23 2013-03-07 11:29:30 no
# m.rds 2798 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:29:30 2013-03-07 11:29:30 no
# mm.rdata 2113 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:24:28 2013-03-07 11:29:30 no
# mm.rds 2102 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:29:30 2013-03-07 11:29:30 no
# bm.rdata 592 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:24:34 2013-03-07 11:29:30 no
# bm.rds 583 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:29:30 2013-03-07 11:29:30 no
# pred.rdata 1007 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:24:40 2013-03-07 11:29:30 no
# pred.rds 995 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:27:30 2013-03-07 11:29:30 no
Auch im Geist der [diese] (http://stackoverflow.com/questions/2929776/how-to-save-a-fitted-r-model-for-later-use?rq= 1) Frage, ich habe versucht, "Modell = FALSE", aber das hatte keine spürbare Wirkung. –
Wenn große Daten Ihr Problem verursachen, dann kann 'biglm' die Antwort sein. Ein Objekt der Klasse 'biglm' ist kleiner als' lm', und es gibt andere 'big data' Effizienzen. – mnel
Eigentlich ist das Problem nicht die Größe der Daten im Speicher, es ist die Geschwindigkeit, die ich mit der Vorhersage() gesucht habe. Funktion. Mein Skript erstellte ein nächtlich aktualisiertes Modell, das über RPy2 aufgerufen wurde, um Vorhersagen für Endbenutzer zu treffen. Mit dem 142 MB-Modell dauerte es ewig, um jede Anfrage zu laden. –