2017-08-29 5 views
0

キャレットでは最小サイズモデルを保存する方法。この例ではgbmFit1にはgbmFit1$trainingDataが含まれています。 gbmFit1を保存すると、そのような変数がすべて保存されます。トレーニングデータが大きいので、このような余分な変数をすべて取り除き、モデルを最小限のサイズで保存したいと考えています。のみpredict(gbmFit1$finalModel, x[1:10, ])を使用してキャレットセーブ最小サイズモデル

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, ]) 
##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

このアプローチの問題は、予測機能イオンは、使用される方法に応じて、異なるパラメータ( 'svmRadial'では' gbm'や 'sigma'などの' n.trees'など)を渡さなければなりません。一方、完全な 'gbmFit1'を節約するには、' predict'を使用している間にパラメータを渡す必要はありません – cNinja