因爲在插入符號ml中有一些方法可用don't have a built in feature selection,我正在試驗rfe
。R插頁:火車和rfe之間的區別
有人可以解釋,train()
和rfe()
之間的區別是什麼 - 除了培訓時間和排名的功能列表?事情只有train()
可以做,反之亦然?
這是我的例子來說明這個問題:
# worker functions
useRFE <- function(trainctrl) {
control <- rfeControl(functions=caretFuncs,
method="cv",
repeats=5,
number=5,
returnResamp="final",
verbose = TRUE)
# run the RFE algorithm
resultsRFE <-
rfe(
training[,1:ncol(iris) - 1],
training$Species,
sizes = subsets,
rfeControl = control,
method = "svmRadial",
metric = "Accuracy",
trControl = trainctrl
)
# test
predictedClasses <- predict(resultsRFE, testing)
confmat <- confusionMatrix(data = predictedClasses$pred, reference = testing$Species)
confmat
# Balanced Accuracy = 100%
}
useTrain <- function(trainctrl) {
# train
resultsTrain <- train(
Species ~ .,
data = training,
method = "svmRadial",
metric = "Accuracy",
trControl = trainctrl
)
# test
predictedClasses <- predict(resultsTrain, testing)
confmat <- confusionMatrix(data = predictedClasses,
reference = testing$Species)
confmat
# Balanced Accuracy = 100%
}
# load library
library(caret)
# load iris data
data(iris)
# create datasets
inTrain <- createDataPartition(y = iris$Species,
p = .75,
list = FALSE)
## The output is a set of integers for the rows of Sonar
## that belong in the training set.
training <<- iris[ inTrain,]
testing <<- iris[-inTrain,]
# select count of features
subsets <- c(1:ncol(iris)-1)
# set controls
trainctrl <- trainControl(
classProbs= TRUE,
method="cv",
repeats=5,
number=5,
verbose = TRUE)
# compare
ptm <- proc.time()
useTrain(trainctrl = trainctrl)
proc.time() - ptm
# Accuracy : 0.9167
# User System passed
# 1.54 0.06 10.27
ptm <- proc.time()
useRFE(trainctrl = trainctrl)
proc.time() - ptm
# Accuracy : 0.9167
# User System passed
# 0.86 0.04 24.44
'useTrain'功能是什麼? – 2015-10-06 08:16:00
請參閱第二個片段,其中定義了兩個函數'useTrain()'和'useRFE()':)。對不起,我想提供運行它所需的所有代碼。 – Boern
之前更好地定義這些函數,因爲人們傾向於按順序加載示例。 – 2015-10-06 08:44:23