在ctree中使用tuneGrid和控件(插入符号)
我在使用插入符号中的tuneGrid和控件选项时遇到问题。在本例中,我希望设置最小标准和最大深度,但也希望指定最小桶大小。将任何选项传递给ctree_control()时,似乎会发生此错误 我得到一个错误: 在评估中(expr、envir、enclose): Fold1的模型拟合失败:MinCriteria=0.95,maxdepth=7(函数(cl、名称、值类)中出现错误: “numeric”类对象的赋值对“TreeGrowControl”类对象中的@“maxdepth”无效;is(值,“整数”)为非真” 可以通过运行以下命令来复制:在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(值,“整数
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))