2017-08-29 53 views
0

插入符號如何保存最小尺寸模型。在這個例子中,gbmFit1包含gbmFit1$trainingData。保存gbmFit1保存所有這些變量。由於我的訓練數據很大,我想擺脫所有這些額外的變量,並希望以最小的尺寸保存模型。插入符號保存最小尺寸模型

library(mlbench) 
    library(caret) 
    data(Sonar) 
    x <- Sonar[, colnames(Sonar)!="Class"] 
    y <- Sonar$Class 
    gbmFit1 <- train(x,y, method = "gbm", verbose = FALSE) 
    predict(gbmFit1, x[1:10, ]) #predict for 10 samples 
    ##[1] R R R R R R R R R R 
    ##Levels: M R 
    dim(gbmFit1$trainingData) 
    #[1] 208 61 

只使用predict(gbmFit1$finalModel, x[1:10, ])給出了錯誤:

predict(gbmFit1$finalModel, x[1:10, ]) 
##Error in paste("Using", n.trees, "trees...\n") : 
##argument "n.trees" is missing, with no default 

回答

0

我想這應該這樣做:

library(mlbench) 
library(caret) 
    data(Sonar) 
    x <- Sonar[, colnames(Sonar)!="Class"] 
    y <- Sonar$Class 
tc1 <- trainControl(returnData = F) # tells caret not to save training data. 
    gbmFit1 <- train(x,y, method = "gbm", verbose = FALSE, trControl = tc1) 
    predict(gbmFit1$finalModel, x[1:10, ], gbmFit1$finalModel$tuneValue$n.trees) # passes n.trees value to gbm. 

你可能想在trainControl功能中插入符號這裏讀了起來:https://topepo.github.io/caret/model-training-and-tuning.html#control

+0

這種方法的問題在於,在預測功能根據所使用的方法,離子必須傳遞不同的參數(例如,'g.mt'爲'gbm'或'sigma'爲'svmRadial')。另一方面,保存完整的'gbmFit1'不需要在使用'predict'時使用任何參數 – cNinja