在ctree中使用tuneGrid和控件(插入符号)

在ctree中使用tuneGrid和控件(插入符号),r,r-caret,party,R,R Caret,Party,我在使用插入符号中的tuneGrid和控件选项时遇到问题。在本例中,我希望设置最小标准和最大深度,但也希望指定最小桶大小。将任何选项传递给ctree_control()时,似乎会发生此错误 我得到一个错误: 在评估中(expr、envir、enclose): Fold1的模型拟合失败:MinCriteria=0.95,maxdepth=7(函数(cl、名称、值类)中出现错误: “numeric”类对象的赋值对“TreeGrowControl”类对象中的@“maxdepth”无效;is(值,“整数

我在使用插入符号中的tuneGrid和控件选项时遇到问题。在本例中,我希望设置最小标准和最大深度,但也希望指定最小桶大小。将任何选项传递给ctree_control()时,似乎会发生此错误

我得到一个错误:

在评估中(expr、envir、enclose): Fold1的模型拟合失败:MinCriteria=0.95,maxdepth=7(函数(cl、名称、值类)中出现错误: “numeric”类对象的赋值对“TreeGrowControl”类对象中的@“maxdepth”无效;is(值,“整数”)为非真”

可以通过运行以下命令来复制:

library(caret)
data("GermanCredit")

trainCtrl <- trainControl(method = 'cv', number = 2, sampling = 'down', 
verboseIter = FALSE, allowParallel = FALSE, classProbs = TRUE, 
                      summaryFunction = twoClassSummary)

tune <- expand.grid(.mincriterion = .95, .maxdepth = seq(5, 10, 2))

ctree_fit <- train(Class ~ ., data = GermanCredit, 
method = 'ctree2', trControl = trainCtrl, metric = "Sens", 
tuneGrid = tune, controls = ctree_control(minbucket = 10))
库(插入符号)
数据(“德国信贷”)

trainCtrl我觉得这可能是一个bug。如果使用
as.integer()
,则可以使其正常工作:

如果我们看一下
treeControl
类,它看起来是这样的

Formal class 'TreeControl' [package "party"] with 4 slots
  ..@ varctrl  :Formal class 'VariableControl' [package 
  ..@ tgctrl   :Formal class 'TreeGrowControl' [package "party"] with 4 slots

[left stuff out]

  .. .. ..@ stump         : logi FALSE
  .. .. ..@ maxdepth      : int 0
  .. .. ..@ savesplitstats: logi TRUE
  .. .. ..@ remove_weights: logi FALSE 
因此,它期望
maxdepth
为整数,插入符号尝试分配一个数值(可以是整数,但不是整数类),但仅当指定了
控件时

如果不指定
控件
,则会指定

ctl <- do.call(getFromNamespace("ctree_control", "party"), 
                                      list(maxdepth = param$maxdepth,
                                           mincriterion = param$mincriterion))

ctl谢谢你,这就解决了问题。实际上现在看起来有点明显了-它就在错误中!我也很感激原因,非常有用。
Formal class 'TreeControl' [package "party"] with 4 slots
  ..@ varctrl  :Formal class 'VariableControl' [package 
  ..@ tgctrl   :Formal class 'TreeGrowControl' [package "party"] with 4 slots

[left stuff out]

  .. .. ..@ stump         : logi FALSE
  .. .. ..@ maxdepth      : int 0
  .. .. ..@ savesplitstats: logi TRUE
  .. .. ..@ remove_weights: logi FALSE 
ctl <- do.call(getFromNamespace("ctree_control", "party"), 
                                      list(maxdepth = param$maxdepth,
                                           mincriterion = param$mincriterion))