将使用插入符训练的xgb模型保存到数据库中

时间:2018-01-22 18:15:22

标签: r sqlite r-caret xgboost

我使用带有火车控制的插入包训练了一个xgb模型。在将模型保存到本地SQLite数据库之前,我将其序列化并转换为字符。我能够保存它。但是当从数据库中检索它并反序列化它时,它会抛出一个错误unserialize(charToRaw(xgbModel))

反序列化错误(charToRaw(selected_model $ Model)):   ReadItem:未知类型57,可能由更高版本的R

编写

1 个答案:

答案 0 :(得分:0)

要保存由插入符号训练的xgboost模型,您需要保存为raw。这是一个例子:

library(mlbench) #for the data set
library(caret)
library(xgboost) 

data(Sonar)  

caret_model <- train(x = Sonar[,1:60],
                     y = Sonar$Class,
                     method = "xgbTree",
                     trControl = trainControl(method = "cv", number = 2),
                     tuneLength = 2)

保存原始模型:

raw_model <- xgb.save.raw(caret_model$finalModel)

序列化并将其保存到本地数据库。当您取消序列化时:

caret_model2 <- xgb.load(raw_model)

preds <- predict(caret_model2, as.matrix(Sonar[,1:60]))

head(preds)
#output
0.08729284 0.04738589 0.05628103 0.04275921 0.02574497 0.00655277

然后您可以使用caret_model2进行预测。

在&#34;保存和加载模型&#34;。

下提到here