如何在randomForestSRC的变量重要性图中仅显示All类别的结果?
仅展示randomForestSRC中All类别的变量重要性图
你可以直接从拟合好的模型对象里提取All类别的重要性得分,手动绘制图表——默认的plot()方法会把所有类别(包括各分类和All)都展示出来,官方确实没给直接只显示All的参数,手动提取数据是最直接的解决办法:
先修正代码里的包加载问题
你的代码开头加载的是class包,但实际用到的是randomForestSRC,先改过来:
library(randomForestSRC) fit <- rfsrc(as.factor(DEFAULT) ~ ., data = CD, ntree = 1000, importance = TRUE, nsplit = 5)
提取All类别重要性并绘图
模型拟合完成后,fit$importance是个矩阵,行是变量,列包含各个分类和All,直接提取All列就能得到你要的数据:
用基础绘图实现
# 提取All类别的重要性得分 all_var_imp <- fit$importance[, "All"] # 按得分降序排序 sorted_imp <- sort(all_var_imp, decreasing = TRUE) # 绘制横向条形图(方便显示长变量名) barplot(sorted_imp, las = 1, horiz = TRUE, main = "变量重要性(All类别)", xlab = "重要性得分", col = "#4682B4")
用ggplot2实现(更美观)
library(ggplot2) # 转成数据框并排序 imp_df <- data.frame( 变量 = names(all_var_imp), 重要性得分 = all_var_imp ) %>% arrange(desc(重要性得分)) ggplot(imp_df, aes(x = reorder(变量, 重要性得分), y = 重要性得分)) + geom_col(fill = "#4682B4") + coord_flip() + labs(title = "变量重要性(All类别)", x = "变量", y = "重要性得分") + theme_bw()
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

