使用插入符号消除递归特征:度量标准' ROC'不是由摘要函数创建的

时间:2017-06-27 09:29:44

标签: r r-caret rfe

我非常感谢使用caret包开始使用递归功能消除的一些帮助。我有74个功能,其值介于0和1之间,而分类变量的值为0或1。

# get data (N=37)
  library(RCurl)
  x <-
 getURL("https://gist.githubusercontent.com/ericpgreen/46865e44182441332597aff1d5fcae86/raw/005774dfd035cdb357765415ded521c25f884d5f/rfe-example.csv")
  df <- read.csv(text = x)
  df <- df[, -1]

我想找到预测分类的最佳项目子集。我选择的指标是ROC。

set.seed(1)

control <- rfeControl(functions=rfFuncs, 
                      method = "LOOCV",
                      repeats = 5, 
                      number = 10,
                      returnResamp="final", 
                      verbose = TRUE)

 trainctrl <- trainControl(classProbs = TRUE,
                           summaryFunction = twoClassSummary)
 rfe.ff.cg <- rfe(df[, 2:length(df)],         # features
                  df[, 1],                    # classification
                  sizes = 2:(length(df)-1),   # all possible subsets
                  rfeControl = control,
                  method = "svmRadial",
                  metric = "ROC",
                  trControl = trainctrl)

似乎3个功能的子集最好:

predictors(result)
#[1] "v24" "v58" "v2" 

但我得到两种错误:

  

公制&#39; ROC&#39;不是由摘要函数创建的; &#39; RMSE&#39;将改为使用

  

响应有五个或更少的唯一值。你确定要做回归吗?

是否有不同的参数允许我拥有的功能?功能v1:v69最初是0-9规模,我重新调整为0-1。功能v70-v74最初是0-3规模,我重新调整为0-1。某些功能只有2或3个唯一值,如警告所示。

table(df$v5)
#0.888888888888889                 1 
#                4                33

1 个答案:

答案 0 :(得分:1)

ROC未包含在默认摘要中,因此需要添加rfFuncs$summary <- twoClassSummary

将分类变量转换为因子df$class <- factor(df$class)后无差错。