提问人:Abner Mácola 提问时间:9/25/2023 最后编辑:UseR10085Abner Mácola 更新时间:9/27/2023 访问量:97
在 R 中保存并加载 lightGBM 模型
Save and load a lightGBM model in R
问:
我正在尝试保存并稍后加载 lightGBM 模型,但我无法做到。 我已经尝试过 saveRDS() 和 readRDS 函数,但是当我预测时,我收到此错误:
predictor$predict(data = data, start_iteration = start_iteration, : 尝试使用不再使用的助推器 存在。如果您调用了 Booster$finalize() 或如果 这个 Booster 是用 saveRDS() 保存的。要避免在 将来,请使用 saveRDS.lgb.Booster() 或 Booster$save_model() 来保存 lightgbm 助推器。
如果我在训练模型后立即使用该模型,或者在将模型加载到工作区的会话中使用该模型,则该模型工作正常。 问题是当我尝试在另一个应用程序上使用该模型时。这是我如何编码的:
library(tidymodels)
library(lightgbm)
library(bonsai)
TMA_model <- data.frame(
age = c(50, 45, 60, 55, 70, 34, 55, 48, 58, 42,
52, 47, 62, 57, 72, 36, 53, 49, 59, 44,
51, 46, 61, 56, 71, 35, 54, 50, 60, 43),
delta_creat = c(1.2, 1.0, 1.5, 1.3, 1.8, 1.2, 1.3, 1.4, 1.1, 1.6,
1.2, 1.0, 1.5, 1.3, 1.8, 1.2, 1.3, 1.4, 1.1, 1.6,
1.2, 1.0, 1.5, 1.3, 1.8, 1.2, 1.3, 1.4, 1.1, 1.6),
max_LDH = c(300, 280, 320, 310, 330, 295, 325, 290, 315, 305,
305, 315, 290, 320, 300, 325, 280, 330, 310, 295,
310, 295, 330, 280, 320, 305, 310, 325, 315, 290),
min_plat = c(150, 140, 160, 155, 170, 145, 165, 150, 135, 160,
160, 155, 170, 145, 150, 160, 140, 170, 155, 145,
155, 145, 170, 140, 160, 150, 155, 160, 165, 135),
min_hb = c(12, 11.5, 13, 12.5, 14, 11.8, 13.2, 12.2, 12.6, 11.9,
12.4, 11.7, 13.1, 12.3, 13.5, 11.6, 12.8, 12.1, 13.4, 12.0,
12.9, 11.6, 13.2, 12.8, 13.0, 11.5, 12.7, 12.3, 12.5, 11.8),
max_ast = c(40, 38, 42, 41, 45, 37, 43, 39, 44, 40,
42, 38, 44, 41, 40, 39, 43, 38, 45, 37,
44, 37, 42, 38, 41, 40, 43, 39, 44, 38),
max_bt = c(37, 37.2, 37.5, 37.3, 37.8, 37.1, 37.4, 37.6, 37.0, 37.7,
37.2, 37.1, 37.5, 37.4, 37.3, 37.0, 37.6, 37.8, 37.2, 37.4,
37.7, 37.1, 37.3, 37.8, 37.0, 37.4, 37.2, 37.6, 37.5, 37.1),
max_ttap = c(100, 95, 105, 102, 110, 97, 108, 93, 103, 98,
105, 100, 95, 110, 102, 108, 97, 93, 103, 95,
100, 97, 105, 93, 108, 102, 110, 98, 103, 100),
max_tp = c(12, 12.2, 12.5, 12.3, 12.8, 12.1, 12.4, 12.6, 12.0, 12.7,
12.3, 12.2, 12.1, 12.8, 12.4, 12.0, 12.6, 12.7, 12.5, 12.3,
12.1, 12.4, 12.7, 12.8, 12.0, 12.2, 12.3, 12.6, 12.5, 12.4),
hypertension = c(1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 0, 0, 1, 1, 0,
0, 1, 0, 1, 0, 0, 1, 1, 0, 1),
MAP = c(90, 92, 88, 91, 89, 93, 87, 94, 86, 90,
92, 94, 88, 90, 91, 89, 87, 93, 86, 92,
91, 90, 93, 94, 86, 88, 89, 87, 92, 91),
TMA_class = factor(c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5,
1, 2, 3, 4, 5, 1, 2, 3, 4, 5,
1, 2, 3, 4, 5, 1, 2, 3, 4, 5))
)
new_data <- data.frame(
age = c(48, 55, 62, 54, 67),
delta_creat = c(1.2, 1.3, 1.1, 1.4, 1.6),
max_LDH = c(305, 290, 320, 310, 295),
min_plat = c(150, 160, 135, 155, 145),
min_hb = c(12.2, 12.6, 11.9, 12.4, 11.7),
max_ast = c(38, 43, 39, 44, 40),
max_bt = c(37.2, 37.4, 37.0, 37.6, 37.1),
max_ttap = c(95, 108, 93, 103, 98),
max_tp = c(12.2, 12.4, 12.0, 12.6, 12.7),
hypertension = c(1, 0, 1, 0, 1),
MAP = c(92, 87, 94, 86, 90)
)
model_spec <-
boost_tree(mode = 'classification',
mtry = 6,
trees = 50,
min_n = 50,
tree_depth = 5) %>%
set_engine('lightgbm')
recipe <- recipe(TMA_class ~ ., data = TMA_model)
model_fit <- workflow() %>%
add_recipe(recipe) %>%
add_model(model_spec) %>%
fit(data = TMA_model)
saveRDS(model_fit, "model_fit.rds")
model_b <- readRDS("model_fit.rds")
new_data_predictions <- predict(model_b, new_data)
print(new_data_predictions)
我在保存或加载它时没有遇到任何错误,但我无法使用加载的模型进行预测。 此外,我对其他模型(例如套索或 xgboost)没有问题,它们工作正常,但 lightGBM 没有。
答:
您必须使用 的开发版本来保存和加载模型,并按照此处报告的 / 正常方式加载模型。但是安装开发版并不是那么简单。您必须按照以下步骤在 Windows 中安装lightgbm
saveRDS()
readRDS()
lightgbm
lightgbm
使用 CMake 从源代码安装
您需要安装并首先形成 https://git-scm.com/downloads 和 https://cmake.org/download/git
CMake
注意:此方法仅在 64 位系统上受支持。如果需要在 32 位 Windows (i386) 上运行 LightGBM,请按照“安装 CRAN 软件包”中的说明进行操作。
Windows 准备
注意:Windows 用户可能需要使用管理员权限(R 或命令提示符,具体取决于安装此软件包的方式)运行。
必须安装 64 位版本。
安装 和 后,请确保将以下路径添加到环境变量 PATH 中。Rtools
Rtools
CMake
• Rtools:如果您有 Rtools 4.3,示例:
C:\rtools43\mingw64\bin
C:\rtools43\usr\bin
• CMake 示例:
C:\Program Files\CMake\bin
• R 示例:
C:\Program Files\R\R-4.3.1\bin
安装 MSYS2 (R 4.x)
从 https://www.msys2.org/ 安装 MSYS2
安装 Pandoc
从 https://pandoc.org/installing.html 下载 Pandoc 并安装它
在 Windows 上,可以使用经典命令提示符或更现代的 PowerShell 终端。如果在桌面模式下使用 Windows,请从“开始”菜单运行 cmd 或 powershell 命令,并在使用 pandoc 之前键入,以将编码设置为 UTF-8。
让我们验证是否安装了 pandoc。类型chcp 65001
pandoc --version
并按回车键。您应该会看到一条消息,告诉您安装了哪个版本的 pandoc,并为您提供了一些其他信息。
使用 CMake 安装
对操作系统执行上述“准备”步骤后,在命令提示符下使用以下命令生成并安装 R 包,以管理员权限运行:
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
Rscript build_r.R --use-msys2
之后,您的代码将运行,而不会出现任何错误。我花了一整天的时间才弄清楚如何安装开发版。lightgbm
评论
上一个:使用包的开发版本部署闪亮的应用
评论
dput()
TMA_model