递归特征消除和变量选择

时间:2018-05-18 04:56:39

标签: r random-forest r-caret rfe

如何获得每个变量的OA和Kappa值,如下图所示? 该研究使用Caret

进行RFE

enter image description here

1 个答案:

答案 0 :(得分:0)

如果您对数据集rfe进行分类,则会获得此表。看起来文章已经清理并重命名了一些列名,但就是这样。

library(caret)

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)
ctrl <- rfeControl(functions = rfFuncs,method = "cv",number = 5, verbose = FALSE)

rf_profile <- rfe(train, trainClass,
                  ntree = 50,
                  rfeControl = ctrl)

rf_profile$results包含您可以在表格中看到的结果。

rf_profile$results
  Variables  Accuracy     Kappa AccuracySD   KappaSD
1         4 0.7355696 0.4599432 0.06290770 0.1274150
2         8 0.7934494 0.5736408 0.08328405 0.1725036
3        16 0.8060759 0.6011138 0.05961418 0.1222687
4        61 0.8260759 0.6411303 0.07101790 0.1483737

如果你想要带有这些变量的名字你可以像这样得到它们

rf_profile$optVariables[rf_profile$results$Variables]
[1] "VRA1"     "TI2"      "Xt"       "G.O..Cl."