如何保存防风草模型拟合来自护林员?

问题描述

我有一个防风草模型(来自护林员),大致来自here

# install.packages("tidymodels")

data(cells,package = "modeldata")

rf_mod <- 
  rand_forest(trees = 100) %>% 
  set_engine("ranger") %>% 
  set_mode("classification")

set.seed(123)
cell_split <- initial_split(cells %>% select(-case),strata = class)

cell_train <- training(cell_split)

rf_fit <- 
  rf_mod %>% 
  fit(class ~ .,data = cell_train)
> class(rf_fit)
[1] "_ranger"   "model_fit"

如何将其保存到磁盘以便以后加载?

我尝试了dput,但出现错误

dput(rf_fit,file="rf_fit.R")
rf_fit2 <- dget("rf_fit.R")
Error in missing_arg() : Could not find function "missing_arg"

是的,model_fit.R文件中有几个missing_arg调用,这似乎是标记丢失的args的某种方式。但是,这只是一条副线。我不需要使用dput,我只想能够保存和加载模型。

解决方法

尝试使用此选项。使用save()load()函数可以存储模型,然后再次对其进行修改。这里的代码:

data(cells,package = "modeldata")

rf_mod <- 
  rand_forest(trees = 100) %>% 
  set_engine("ranger") %>% 
  set_mode("classification")

set.seed(123)
cell_split <- initial_split(cells %>% select(-case),strata = class)

cell_train <- training(cell_split)

rf_fit <- 
  rf_mod %>% 
  fit(class ~ .,data = cell_train)

#Export option
save(rf_fit,file='Mymod.RData')
load('Mymod.RData')

另一种选择是使用saveRDS()保存模型,然后使用readRDS()加载模型,但需要在对象中进行分配:

#Export option 2
saveRDS(rf_fit,file = "Mymod.rds")
# Restore the object
rf_fit <- readRDS(file = "Mymod.rds")
,

如Duck所述,saveRDS()readRDS()可用于保存/加载任何R对象。 save()load()也可以用于同一目的。比较这两种方法的在线讨论/博客很多。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...