0

我有一个欧洲防风草模型(来自游侠),大致来自这里

# 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调用,这似乎是某种标记丢失参数的方法。然而,这是一条支线。我不需要使用 dput,我只想能够保存和加载模型。

4

2 回答 2

2

试试这个选项。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")
于 2020-10-16T23:53:19.683 回答
0

正如 Duck 提到的,saveRDS()readRDS()用于保存/加载任何 R 对象。save()&也load()可以用于相同的目的。有许多在线讨论/博客比较了这两种方法。

于 2020-10-17T06:23:38.467 回答