我使用带有火车控制的插入包训练了一个xgb模型。在将模型保存到本地SQLite数据库之前,我将其序列化并转换为字符。我能够保存它。但是当从数据库中检索它并反序列化它时,它会抛出一个错误unserialize(charToRaw(xgbModel))
反序列化错误(charToRaw(selected_model $ Model)): ReadItem:未知类型57,可能由更高版本的R
编写答案 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