Ich versuche, Vorhersagemodell in Caret-Paket in R zu erstellen und Vorhersage für neue Daten von Terminal/cmd aufzurufen. Hier ist reproduzierbar Beispiel:Rscript - lange Ausführungszeit
# Sonar_training.R
## learning and saving model
library(caret)
library(mlbench)
data(Sonar)
set.seed(107)
inTrain <- createDataPartition(y = Sonar$Class, p = .75,list = FALSE)
training <- Sonar[ inTrain,]
testing <- Sonar[-inTrain,]
saveRDS(testing,"test.rds")
ctrl <- trainControl(method = "repeatedcv",
repeats = 3)
plsFit <- train(Class ~ .,data = training,method = "pls",
tuneLength = 15,
trControl = ctrl,
preProc = c("center", "scale"))
plsClasses <- predict(plsFit, newdata = testing)
saveRDS(plsFit,"fit.rds")
Und hier ist Skript von Rscript.exe aufzurufen:
# script.R
##reading model and predict test data
t <- Sys.time()
pls <- readRDS("fit.rds")
testing <- readRDS("test.rds")
head(predict(pls, newdata = testing))
print(Sys.time() - t)
ich dies mit folgenden Anweisung in Terminal ausgeführt:
[email protected]:~$ Rscript script.R
Loading required package: pls
Attaching package: ‘pls’
The following object is masked from ‘package:stats’:
loadings
[1] M M R M R R
Levels: M R
Time difference of 2.209697 secs
Gibt es eine Möglichkeit um es schneller/effizienter zu machen? Gibt es zum Beispiel die Möglichkeit, Pakete nicht bei jeder Ausführung zu laden? Ist readRDS korrekt für das Lesen von Modellen in diesem Fall?
Profilieren Sie Ihren Code. – Roland