【问题标题】:How to save a parsnip model fit (from ranger)?如何保存防风草模型拟合(来自游侠)?
【发布时间】:2020-10-16 23:46:23
【问题描述】:

我有一个欧洲防风草模型(来自 ranger),大致来自 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 调用,这似乎是某种标记缺失参数的方法。然而,这是一条支线。我不需要使用 dput,我只想能够保存和加载模型。

【问题讨论】:

    标签: r tidymodels r-ranger r-parsnip


    【解决方案1】:

    试试这个选项。 save()load() 函数允许您存储模型,然后再次对其进行 inkove。代码如下:

    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")
    

    【讨论】:

    • 噢!我已经多次使用save,但在星期五晚些时候,我没有想到。谢谢。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2022-11-21
      • 2021-11-09
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      相关资源
      最近更新 更多