使用插入符号的递归特征消除:度量 'ROC' 不是由汇总函数创建的
recursive feature elimination with caret: Metric 'ROC' is not created by the summary function
对于使用 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"
但是我遇到了两种类型的错误:
Metric 'ROC' is not created by the summary function; 'RMSE' will be used instead
和
The response has five or fewer unique values. Are you sure you want to do regression?
是否有不同的参数来允许我拥有的功能?特征 v1:v69 最初是在 0-9 范围内,我重新调整为 0-1。特征 v70-v74 最初是 0-3 的比例,我重新调整为 0-1。如警告所示,某些功能只有 2 或 3 个唯一值。
table(df$v5)
#0.888888888888889 1
# 4 33
ROC 未包含在默认摘要中,因此需要添加 rfFuncs$summary <- twoClassSummary
。
运行 分类变量转换为因子后没有报错:df$class <- factor(df$class)
.
对于使用 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"
但是我遇到了两种类型的错误:
Metric 'ROC' is not created by the summary function; 'RMSE' will be used instead
和
The response has five or fewer unique values. Are you sure you want to do regression?
是否有不同的参数来允许我拥有的功能?特征 v1:v69 最初是在 0-9 范围内,我重新调整为 0-1。特征 v70-v74 最初是 0-3 的比例,我重新调整为 0-1。如警告所示,某些功能只有 2 或 3 个唯一值。
table(df$v5)
#0.888888888888889 1
# 4 33
ROC 未包含在默认摘要中,因此需要添加 rfFuncs$summary <- twoClassSummary
。
运行 分类变量转换为因子后没有报错:df$class <- factor(df$class)
.