我使用了以ROC为度量标准的插入符号的RFE算法,并希望绘制结果。这很好用,但是现在我想将两个结果放在一个图中,但我不确定是否有一个简单的解决方案,甚至可能。很抱歉,如果这是一个愚蠢的问题,并且在R中没有太高级。是否有解决方案?
这是我的代码:
# define the control using a random forest selection function
rfFuncs$summary <- twoClassSummary
control <- rfeControl(functions=rfFuncs, verbose = TRUE, method="cv", number=10)
# run the RFE algorithm
results_rfe_roc_deliv <- rfe(data_deliverable[,1:91], data_deliverable[,92], sizes=c(1:91), rfeControl=control ,metric = 'ROC')
# summarize the results
print(results_rfe_roc_deliv)
# list the chosen features
predictors(results_rfe_roc_deliv)
results_rfe_roc_non_deliv <- rfe(data_non_deliverable[,1:91], data_non_deliverable[,92], sizes=c(1:91), rfeControl=control ,metric = 'ROC')
# summarize the results
print(results_rfe_roc_non_deliv)
# list the chosen features
predictors(results_rfe_roc_non_deliv)
# plot the results
plot(results_rfe_roc_deliv, type=c("g", "o"))
plot(results_rfe_roc_non_deliv, type=c("g", "o"))
答案 0 :(得分:0)
对于想知道如何轻松实现此目的的任何人,请从对象中提取结果,然后通过ggplot软件包对其进行绘制。我的解决方案有点复杂,但是您可以轻松地根据需要对其进行修改。代码是不言自明的。这是我的方法:
rfe_result_export <- results_rfe_roc_deliv$results
names(rfe_result_export)[names(rfe_result_export) == 'ROC'] <- 'ROC.deliv'
rfe_result_export <- rfe_result_export[,-c(3:7)]
rfe_result_export$ROC.non.deliv <- results_rfe_roc_non_deliv$results$ROC
#flag data
rfe_result_export$highlight.deliv <- FALSE
rfe_result_export$highlight.non.deliv <- FALSE
#points of interest
rfe_result_export$highlight.deliv[c(40,66)] <- TRUE
rfe_result_export$highlight.non.deliv[c(48,86)] <- TRUE
ggplot(rfe_result_export, aes(Variables)) +
geom_point(aes(y=ROC.non.deliv, colour="blue")) +
geom_point(aes(y=ROC.deliv, colour="black")) +
#points of interest
geom_point(data = subset(rfe_result_export, highlight.deliv == TRUE), aes(y=ROC.deliv, colour="red")) +
geom_point(data = subset(rfe_result_export, highlight.non.deliv == TRUE), aes(y=ROC.non.deliv, colour="red")) +
scale_color_manual(values =c("blue","black","red"), labels = c("Deliverable",'Non-Delivarble', "Points of interest")) +
ylab("ROC value") + ggtitle("Results of Recursive Feature Elimination") +
scale_x_continuous(breaks = scales::pretty_breaks(n = 10))