尝试使用交叉折叠重采样并从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 <...>]
上面的评论者是正确的,这里问题的根源是factor列中的空格。目前,重采样功能和普通旧拟合功能的处理方式有所不同,我们正在积极研究如何为用户解决此问题。谢谢您的耐心配合!
同时,我建议设置一个简单的workflow()
加一个workflow()
,它们将一起为您处理所有必要的虚拟变量。
茱莉亚打赌我,所以她得到了业力。我有相同的答案(我做她做的事,但速度较慢):