
rfe(x, ...)## S3 method for class 'default':
rfe(x, y,
sizes = 2^(2:4),
metric = ifelse(is.factor(y), "Accuracy", "RMSE"),
maximize = ifelse(metric == "RMSE", FALSE, TRUE),
rfeControl = rfeControl(),
...)
rfeIter(x, y,
testX, testY,
sizes,
rfeControl = rfeControl(),
...)
## S3 method for class 'rfe':
predict(object, newdata, ...)
x
rfeControl
for examplesrfe
predict.rfe
)length(sizes) + 1
containing the column names of the ``surviving'' predictors
at each stage of selection. The first element corresponds to all the predictors (i.e. size = ncol(x)
)rfe
can be used with "explicit parallelism", where different resamples (e.g. cross-validation group) can be split up and run on multiple machines or processors. By default, rfe
will use a single processor on the host machine. As of version 4.99 of this package, the framework used for parallel processing uses the rfe
does not change; prior to the call to rfe
, a parallel backend is registered with
rfeIter
is the basic algorithm while rfe
wraps these operations inside of resampling. To avoid selection bias, it is better to use the function rfe
than rfeIter
.
rfeControl
data(BloodBrain)
x <- scale(bbbDescr[,-nearZeroVar(bbbDescr)])
x <- x[, -findCorrelation(cor(x), .8)]
x <- as.data.frame(x)
set.seed(1)
lmProfile <- rfe(x, logBBB,
sizes = c(2:25, 30, 35, 40, 45, 50, 55, 60, 65),
rfeControl = rfeControl(functions = lmFuncs,
number = 200))
set.seed(1)
lmProfile2 <- rfe(x, logBBB,
sizes = c(2:25, 30, 35, 40, 45, 50, 55, 60, 65),
rfeControl = rfeControl(functions = lmFuncs,
rerank = TRUE,
number = 200))
xyplot(lmProfile$results$RMSE + lmProfile2$results$RMSE ~
lmProfile$results$Variables,
type = c("g", "p", "l"),
auto.key = TRUE)
rfProfile <- rfe(x, logBBB,
sizes = c(2, 5, 10, 20),
rfeControl = rfeControl(functions = rfFuncs))
bagProfile <- rfe(x, logBBB,
sizes = c(2, 5, 10, 20),
rfeControl = rfeControl(functions = treebagFuncs))
set.seed(1)
svmProfile <- rfe(x, logBBB,
sizes = c(2, 5, 10, 20),
rfeControl = rfeControl(functions = caretFuncs,
number = 200),
## pass options to train()
method = "svmRadial")
## classification with no resampling
data(mdrr)
mdrrDescr <- mdrrDescr[,-nearZeroVar(mdrrDescr)]
mdrrDescr <- mdrrDescr[, -findCorrelation(cor(mdrrDescr), .8)]
set.seed(1)
inTrain <- createDataPartition(mdrrClass, p = .75, list = FALSE)[,1]
train <- mdrrDescr[ inTrain, ]
test <- mdrrDescr[-inTrain, ]
trainClass <- mdrrClass[ inTrain]
testClass <- mdrrClass[-inTrain]
set.seed(2)
ldaProfile <- rfe(train, trainClass,
sizes = c(1:10, 15, 30),
rfeControl = rfeControl(functions = ldaFuncs, method = "cv"))
plot(ldaProfile, type = c("o", "g"))
postResample(predict(ldaProfile, test), testClass)
#######################################
## Parallel Processing Example via multicore
library(doMC)
## Note: if the underlying model also uses foreach, the
## number of cores specified above will double (along with
## the memory requirements)
registerDoMC(cores = 2)
set.seed(1)
lmProfile <- rfe(x, logBBB,
sizes = c(2:25, 30, 35, 40, 45, 50, 55, 60, 65),
rfeControl = rfeControl(functions = lmFuncs,
number = 200))
Run the code above in your browser using DataLab