如何用R提取二分类模型中恶性类的变量重要性并转为数据框
把caret变量重要性结果转为数据框(针对恶性类)
当你用varImp()获取到针对恶性类的变量重要性后,直接提取结果对象中的$importance字段即可得到基础数据框,再通过简单整理就能得到包含变量名和对应重要性分数的清晰结构:
基础实现(Base R)
在你现有代码的print(var_imp_sens)之后添加以下代码:
# 提取恶性类的变量重要性数据 var_imp_df <- as.data.frame(var_imp_sens$importance) # 添加变量名列并重置行名 var_imp_df <- data.frame( Variable = rownames(var_imp_df), Malignant_Importance = var_imp_df$malignant, row.names = NULL ) # 查看结果 print(var_imp_df)
用dplyr简化(可选)
如果你习惯用tidyverse工具,可以更简洁地整理:
library(dplyr) library(tibble) var_imp_df <- var_imp_sens$importance %>% rownames_to_column("Variable") %>% rename(Malignant_Importance = malignant)
补充说明
varImp()返回的VarImp对象中,$importance本身就是一个数据框,行对应变量名,列对应指定类(这里是malignant)的重要性分数。- 如果你想同时保留两个类的重要性,只需去掉
class = "malignant"参数,再按同样方式提取整理即可。 - 你的循环最后一次迭代是训练
rf模型,所以当前var_imp_sens是针对随机森林模型的结果;如果需要获取knn模型的变量重要性,需要在循环内分别保存每个模型的varImp结果。
内容的提问来源于stack exchange,提问作者thole
相关产品推荐
相关产品推荐

