使用插入符的 R 中个体 类 的可变重要性
Variable Importance for Individual classes in R using Caret
我使用随机森林来预测 classes。现在,我正在尝试为每个 class 绘制变量重要性。我使用了下面的代码,但它并没有为我提供 varImp class 明智的,它为我提供了整个模型。谁能帮帮我。
谢谢。
odFit = train(x = df_5[,-22],
y = df_5$`kpres$cluster`,
ntree=20,method="rf",metric = "Accuracy",trControl = control,tuneGrid = tunegrid
)
odFit
varImp(odFit)
只需在train
函数中添加importance=TRUE
,与randomForest
包中的importance(odFit)
相同。
这是一个可重现的例子:
library(caret)
data(iris)
control <- trainControl(method = "cv",10)
tunegrid <- expand.grid(mtry=2:ncol(iris)-1)
odFit = train(x = iris[,-5],
y = iris$Species,
ntree=20,
trControl = control,
tuneGrid = tunegrid,
importance=T
)
odFit
varImp(odFit)
这是输出
rf variable importance
variables are sorted by maximum importance across the classes
setosa versicolor virginica
Petal.Width 57.21 73.747 100.00
Petal.Length 61.90 79.981 77.49
Sepal.Length 20.01 2.867 40.47
Sepal.Width 20.01 0.000 15.73
您可以使用 ggplot
绘制变量重要性
library(ggplot2)
vi <- varImp(odFit,scale=T)[[1]]
vi$var <-row.names(vi)
vi <- reshape2::melt(vi)
ggplot(vi,aes(value,var,col=variable))+
geom_point()+
facet_wrap(~variable)
我使用随机森林来预测 classes。现在,我正在尝试为每个 class 绘制变量重要性。我使用了下面的代码,但它并没有为我提供 varImp class 明智的,它为我提供了整个模型。谁能帮帮我。
谢谢。
odFit = train(x = df_5[,-22],
y = df_5$`kpres$cluster`,
ntree=20,method="rf",metric = "Accuracy",trControl = control,tuneGrid = tunegrid
)
odFit
varImp(odFit)
只需在train
函数中添加importance=TRUE
,与randomForest
包中的importance(odFit)
相同。
这是一个可重现的例子:
library(caret)
data(iris)
control <- trainControl(method = "cv",10)
tunegrid <- expand.grid(mtry=2:ncol(iris)-1)
odFit = train(x = iris[,-5],
y = iris$Species,
ntree=20,
trControl = control,
tuneGrid = tunegrid,
importance=T
)
odFit
varImp(odFit)
这是输出
rf variable importance
variables are sorted by maximum importance across the classes
setosa versicolor virginica
Petal.Width 57.21 73.747 100.00
Petal.Length 61.90 79.981 77.49
Sepal.Length 20.01 2.867 40.47
Sepal.Width 20.01 0.000 15.73
您可以使用 ggplot
library(ggplot2)
vi <- varImp(odFit,scale=T)[[1]]
vi$var <-row.names(vi)
vi <- reshape2::melt(vi)
ggplot(vi,aes(value,var,col=variable))+
geom_point()+
facet_wrap(~variable)