我正在尝试使用xpboost模型保存并部署到sql服务器上
unserialize(as.raw(paste(serialize(model_xgb, NULL), collapse = "")))
此处找到方法:https://longhowlam.wordpress.com/2016/12/23/did-you-say-sql-server-yes-i-did/
在转向SQL之前,我首先要完全在R中尝试该过程,只是为了确保它能正常工作,并且得到以下错误和警告消息:
Error in unserialize(as.raw(xgb_str)) : read error
In addition: Warning messages:
1: In unserialize(as.raw(xgb_str)) : NAs introduced by coercion
2: In unserialize(as.raw(xgb_str)) :
out-of-range values treated as 0 in coercion to raw
这是一个代表:
require(data.table)
require(mltools)
require(xgboost)
require(dplyr)
mat_cars <- mtcars %>%
select(., mpg, disp, hp, wt, cyl) %>%
mutate_at(., vars(cyl), as.factor) %>%
as.data.table() %>%
one_hot() %>%
data.matrix()
model_xgb <- xgboost(data = mat_cars[, -1],
label = mat_cars[, 1],
nrounds = 10,
verbose = 0)
xgb_str <- paste(serialize(model_xgb, NULL), collapse = "")
model_xgb2 <- unserialize(as.raw(xgb_str))
另外,这是我的会话信息:
R version 3.5.2 (2018-12-20)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows Server 2012 R2 x64 (build 9600)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] bindrcpp_0.2.2 dplyr_0.7.8 xgboost_0.71.2 mltools_0.3.5 data.table_1.12.0 RevoUtilsMath_11.0.0
[7] RevoUtils_11.0.2 RevoMods_11.0.1 MicrosoftML_9.4.7 mrsdeploy_1.1.3 RevoScaleR_9.4.7 lattice_0.20-38
[13] rpart_4.1-13
loaded via a namespace (and not attached):
[1] Rcpp_1.0.0 rstudioapi_0.9.0 CompatibilityAPI_1.1.0 bindr_0.1.1 magrittr_1.5 tidyselect_0.2.5
[7] R6_2.3.0 rlang_0.3.1 foreach_1.4.4 tools_3.5.2 grid_3.5.2 iterators_1.0.11
[13] assertthat_0.2.0 tibble_2.0.1 crayon_1.3.4 Matrix_1.2-15 purrr_0.3.0 codetools_0.2-15
[19] curl_3.3 glue_1.3.0 stringi_1.2.4 pillar_1.3.1 compiler_3.5.2 jsonlite_1.6
[25] pkgconfig_2.0.2
请注意,当我在具有R 3.6.1和xgboost 0.9的本地计算机上尝试时,也会遇到相同的错误。另外,我尝试用xgb.save.raw替换序列化,并得到完全相同的错误。
任何帮助将不胜感激!