带有游标程序包的fit_resamples失败

问题描述 投票:0回答:2

尝试使用交叉折叠重采样并从Ranger软件包中拟合随机森林。没有重新采样的拟合有效,但是一旦我尝试重新采样拟合,它就会失败,并出现以下错误。

考虑以下df

df<-structure(list(a = c(1379405931, 732812609, 18614430, 1961678341, 
2362202769, 55687714, 72044715, 236503454, 61988734, 2524712675, 
98081131, 1366513385, 48203585, 697397991, 28132854), b = structure(c(1L, 
6L, 2L, 5L, 7L, 8L, 8L, 1L, 3L, 4L, 3L, 5L, 7L, 2L, 2L), .Label = c("CA", 
"IA", "IL", "LA", "MA", "MN", "TX", "WI"), class = "factor"), 
    c = structure(c(2L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 1L, 
    2L, 2L, 2L, 1L), .Label = c("R", "U"), class = "factor"), 
    d = structure(c(3L, 3L, 1L, 3L, 3L, 1L, 1L, 3L, 1L, 3L, 1L, 
    3L, 2L, 3L, 1L), .Label = c("CAH", "LTCH", "STH"), class = "factor"), 
    e = structure(c(3L, 2L, 3L, 3L, 1L, 3L, 3L, 3L, 2L, 4L, 2L, 
    2L, 3L, 3L, 3L), .Label = c("cancer", "general long term", 
    "psychiatric", "rehabilitation"), class = "factor")), row.names = c(NA, 
-15L), class = c("tbl_df", "tbl", "data.frame"))

遵循简单适合的作品,没有问题

library(tidymodels)
library(ranger)

rf_spec <- rand_forest(mode = 'regression') %>% 
  set_engine('ranger')


rf_spec %>% 
  fit(a ~. , data = df)

但是一旦我想通过]运行交叉验证>

rf_folds <- vfold_cv(df, strata = c)

fit_resamples(a ~ . ,
              rf_spec,
              rf_folds)

以下错误

模型:parse.formula(公式,数据,env = parent.frame())中的错误:错误:公式接口中的列名称非法。修复列名称或在Ranger中使用备用接口。

尝试使用交叉折叠重采样并从Ranger软件包中拟合随机森林。没有重新采样的拟合效果很好,但是一旦我尝试重新采样拟合,它就会失败并出现以下错误。考虑以下df df <...>]

r cross-validation data-fitting tidymodels r-ranger
2个回答
0
投票

上面的评论者是正确的,这里问题的根源是factor列中的空格。目前,重采样功能和普通旧拟合功能的处理方式有所不同,我们正在积极研究如何为用户解决此问题。谢谢您的耐心配合!

同时,我建议设置一个简单的workflow()加一个workflow(),它们将一起为您处理所有必要的虚拟变量。


0
投票

茱莉亚打赌我,所以她得到了业力。我有相同的答案(我做她做的事,但速度较慢):

© www.soinside.com 2019 - 2024. All rights reserved.