r - 多类中的可变重要性
问题描述
我有一个像 iris 这样的数据集,我的 y 是一个多类因子变量。有什么方法可以看到 , 的相同结果,method = rf
非常感谢。method = treebag
method = boost
data(iris); head(iris)
iris$Species <- factor(iris$Species)
set.seed(87)
inTrainingSet <- createDataPartition(iris$Species, p=.80,list=0)
train <- iris[inTrainingSet,]
test <- iris[-inTrainingSet,]
ctrl <- trainControl(method = "cv", number = 2, verboseIter = TRUE)
pls <- train(Species ~ Sepal.Length+Sepal.Width+Petal.Length+Petal.Width ,
method = "pls", data = iris,
trControl = ctrl)
attributes(varImp(pls))
varImp(pls)$importance
解决方案
您的问题有几点,所以如果有一个内置方法可以为每个模型正确估计这个,您可以使用 default 运行 varImp useModel = FALSE
。
对于随机森林,您importance=TRUE
在拟合时添加:
rf <- train(Species ~ Sepal.Length+Sepal.Width+Petal.Length+Petal.Width ,
method = "rf", data = iris,
trControl = ctrl,importance=TRUE)
varImp(rf)
rf variable importance
variables are sorted by maximum importance across the classes
setosa versicolor virginica
Petal.Length 66.94 100.00 85.40
Petal.Width 63.86 92.22 89.87
Sepal.Length 16.75 24.05 24.90
Sepal.Width 12.75 0.00 17.49
如果模型没有内置多类,则使用成对的 roc 曲线来推导这些重要性,请参阅关于此特性的插入符号页面:
tb <- train(Species ~ Sepal.Length+Sepal.Width+Petal.Length+Petal.Width ,
method = "treebag", data = iris,
trControl = ctrl,importance=TRUE)
varImp(tb,useModel=TRUE)
treebag variable importance
Overall
Petal.Length 100.00
Petal.Width 99.17
Sepal.Length 32.23
Sepal.Width 0.00
varImp(tb,useModel=FALSE)
ROC curve variable importance
variables are sorted by maximum importance across the classes
setosa versicolor virginica
Petal.Width 100.00 100.00 100.0
Petal.Length 100.00 100.00 100.0
Sepal.Length 90.70 59.30 90.7
Sepal.Width 54.59 54.59 0.0
您没有指定使用哪种增强树方法,但我想您可以轻松使用上述选项之一
推荐阅读
- xml - 在 xslt 中定义的工具 linux xsltproc 标记未写入输出 xml
- powerbi - 按最后状态分类的 DAX 总数
- ruby-on-rails - Rails 和 Active Storage,如何在创建调用时直接分配附件?
- paypal - 如果输入的第一张卡详细信息失败,则所有卡的每个 3D 安全性都失败
- python - 数据帧/列表/numpy元组数组的快速切片
- vue.js - 使用 createApp 传递道具
- amazon-web-services - 从主存储桶中删除 S3 对象(所有版本),同时将其复制到跨区域存储桶
- vb.net - 错误:由于以下错误,检索组件的 COM 类工厂失败:80070005 访问被拒绝
- react-native - 无法找到 RNReanimated 依赖的 React-callinvoker 规范
- amazon-sagemaker - 使用 boto3 调用 sagemaker 端点。抛出错误