R在RFE(递归特征消除)中使用我自己的模型来选择重要特征

时间:2018-06-05 03:24:26

标签: r svm r-caret feature-selection rfe

使用RFE,您可以获得功能的重要性排名,但是现在我只能使用包内的模型和参数,如:lmFuncs(linear model),rfFuncs(random forest) 似乎

caretFuncs

可以为您自己的模型和参数做一些自定义设置,但我不知道详细信息,正式文档没有详细说明,我想将svm和gbm应用于此RFE流程,因为这是我以前训练的模型,任何人都有任何想法吗?

1 个答案:

答案 0 :(得分:2)

我试图根据文档重新创建工作示例。您正确识别了caretFuncs的使用,然后可以在rfe调用中设置模型参数(也可以定义trainControl对象等)。

# load caret
library(caret)

# load data, get target and feature column labels
data(iris)
col_names = names(iris);target = "Species"
feature_names = col_names[col_names!=target]

# construct rfeControl object
rfe_control = rfeControl(functions = caretFuncs, #caretFuncs here
                     method="cv",
                     number=5)

# construct trainControl object for your train method 
fit_control = trainControl(classProbs=T,
                        search="random")

# get results
rfe_fit = rfe(iris[,feature_names], iris[,target],
             sizes = 1:4,
             rfeControl = rfe_control,
             method="svmLinear",
             # additional arguments to train method here
             trControl=fit_control)

如果您想更深入地研究此事,则可能需要访问下面的链接。

rfe文档,其中包含基本代码段:
https://www.rdocumentation.org/packages/caret/versions/6.0-80/topics/rfe

关于caret

rfe文档:
https://topepo.github.io/caret/recursive-feature-elimination.html

希望这会有所帮助!

相关问题