我正在尝试熟悉插入符号包。我之前会直接使用rpart - 例如使用以下语法
fit_rpart=rpart(y~.,data=dt1,method="anova").
我指定了anova,因为我的目标是回归(而非分类)
with caret - 我将使用以下语法:
rpart_fit <- train(y ~ ., data = dt1, method = "rpart",trControl=fitControl)
我的问题是,由于方法槽已经被使用,我在哪里/如何仍然指定method =“anova”?
非常感谢提前!
答案 0 :(得分:1)
您可以使用当前的rpart
代码制作custom method。首先,获取当前代码:
library(caret)
rpart_code <- getModelInfo("rpart", regex = FALSE)[[1]]
然后,您只需在代码中添加额外选项即可。这种方法有些复杂,因为它处理了许多不同的情况,但这里是编辑:
rpart_code$fit <- function(x, y, wts, param, lev, last, classProbs, ...) {
cpValue <- if(!last) param$cp else 0
theDots <- list(...)
if(any(names(theDots) == "control")) {
theDots$control$cp <- cpValue
theDots$control$xval <- 0
ctl <- theDots$control
theDots$control <- NULL
} else ctl <- rpart.control(cp = cpValue, xval = 0)
## check to see if weights were passed in (and availible)
if(!is.null(wts)) theDots$weights <- wts
modelArgs <- c(list(formula = as.formula(".outcome ~ ."),
data = if(is.data.frame(x)) x else as.data.frame(x),
control = ctl,
method = "anova"),
theDots)
modelArgs$data$.outcome <- y
out <- do.call("rpart", modelArgs)
if(last) out <- prune.rpart(out, cp = param$cp)
out
}
然后测试:
library(rpart)
set.seed(445)
mod <- train(pgstat ~ age + eet + g2 + grade + gleason + ploidy,
data = stagec,
method = rpart_code,
tuneLength = 8)
最高
答案 1 :(得分:0)
在插入方法&#39;是指您想要使用的模型类型,例如rpart或lm(线性回归)或rf(随机森林)。
您所指的内容定义为&#39; metric&#39;在插入符号中。 如果您的y变量是连续变量,则度量标准将默认设置为最大化RMSE。所以你不必做任何事情。
您也可以通过以下方式明确指定:
rpart_fit <- train(y ~ ., data = dt1, method = "rpart",trControl=fitControl, metric="RMSE")