Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ranger软件包进行fit_重采样失败_R_Cross Validation_Data Fitting_Tidymodels_R Ranger - Fatal编程技术网

使用ranger软件包进行fit_重采样失败

使用ranger软件包进行fit_重采样失败,r,cross-validation,data-fitting,tidymodels,r-ranger,R,Cross Validation,Data Fitting,Tidymodels,R Ranger,尝试使用交叉折叠重采样并拟合ranger软件包中的随机森林。没有重采样的拟合是有效的,但一旦我尝试重采样拟合,它就会失败,并出现以下错误 考虑以下df df<-structure(list(a = c(1379405931, 732812609, 18614430, 1961678341, 2362202769, 55687714, 72044715, 236503454, 61988734, 2524712675, 98081131, 1366513385, 48203585, 69

尝试使用交叉折叠重采样并拟合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"))
df%
拟合(a~,数据=df)
但只要我想通过

rf_folds <- vfold_cv(df, strata = c)

fit_resamples(a ~ . ,
              rf_spec,
              rf_folds)

rf\u folds上面的评论是正确的,这里问题的来源是factor列中的空格。重采样功能和普通旧配件功能目前处理方式不同,我们正在积极研究如何为用户解决这一问题。谢谢你的耐心

同时,我建议设置一个简单的plus a,它将为您处理所有必要的虚拟变量mung

库(tidymodels)
rf_规格%
设置引擎(“游骑兵”)
rf_wf%
添加_型号(rf_规格)%%>%
添加配方(配方(a~,数据=df))
配合(rf_wf,数据=df)
#> ══ 工作流程[培训]═══════════════════════════════════════════════════════════════════════════════════════════
#>预处理器:配方
#>型号:rand_forest()
#> 
#> ── 预处理器─────────────────────────────────────────────────────────────────────────────────────────────────
#>0配方步骤
#> 
#> ── 模型────────────────────────────────────────────────────────────────────────────────────────────────────────
#>游侠结果
#> 
#>电话:
#>ranger::ranger(公式=公式,数据=数据,num.threads=1,verbose=FALSE,seed=sample.int(10^5,1))
#> 
#>类型:回归
#>树木数目:500
#>样本量:15
#>自变量数:4
#>Mtry:2
#>目标节点大小:5
#>可变重要性模式:无
#>分割规则:方差
#>OOB预测误差(MSE):4.7042e+17
#>R平方(OOB):0.4341146
使用分层的rf#U折叠#10折叠交叉验证
#>#tibble:9 x 4
#>拆分id.metrics.notes
#>                                  
#>1折叠1
#>2折叠2
#>3折叠3
#>4折叠4
#>折叠
#>6折叠6
#>折叠
#>8折叠8
#>折叠

由(v0.3.0)于2020年3月20日创建。

朱莉娅与我打赌,让她得到报应。我得到了相同的答案(我做了她做的事情,但速度较慢):

这是一种bug,我们一直在努力使它不会出错。这很复杂。让我解释一下

ranger
是其公式方法不创建伪变量(因为它不需要伪变量)的少数R包之一

tune
中的基础结构使用
工作流
包处理公式,然后将结果数据交给
ranger
。默认情况下,工作流会创建虚拟变量,并且由于您的某些因子级别不是有效的R列名(例如,
“常规长期”
),因此,
ranger()
会引发错误

(我知道你没有使用工作流,但这就是幕后发生的事情)

我们正在做最好的事情,因为大多数用户不知道许多基于树的模型包不会生成虚拟变量。更复杂的是,
parsnip
还没有使用工作流,也没有给你一个错误

目前的解决方案

使用简单的配方代替配方:

库(tidymodels)
#> ── 附加包─────────────────────────────────────────────────────────────────────────────────── tidymodels 0.1.0──
#> ✓ 扫帚0.5.4✓ 配方0.1.10
#> ✓ 刻度盘0.0.4✓ rsample 0.0.5
#> ✓ dplyr 0.8.5✓ tibble 2.1.3
#> ✓ ggplot2 3.3.0✓ 调谐0.0.1
#> ✓ 推断0.5.1✓ 工作流0.1.0
#> ✓ 欧防风0.0.5✓ 尺度0.0.5
#> ✓ purrr 0.3.3
#> ── 冲突────────────────────────────────────────────────────────────────────────────────────── tidymodels_冲突()──
#>x purrr::discard()遮罩比例::discard()
#>x dplyr::filter()屏蔽stats::filter()
#>x dplyr::lag()屏蔽stats::lag()
#>x ggplot2::margin()屏蔽拨号::margin()
#>x配方::步骤()遮罩统计::步骤()
df#A tibble:9 x 4
#>拆分id.metrics.notes
#> *                                
#>1折叠1
#>2折叠2
#>3折叠3
#>4折叠4
#>折叠
#>6折叠6
#>折叠
#>8折叠8
#>折叠
#仅供参考`tune`0.0.2将需要不同的参数顺序:
#rf\u规格%>%fit\u重采样(配方(a~,数据=df),rf\u折叠)

由(v0.3.0)

于2020-03-20创建,似乎是一个问题,列中的空格值被转换为虚拟变量
rf_folds <- vfold_cv(df, strata = c)

fit_resamples(a ~ . ,
              rf_spec,
              rf_folds)