如何从 R 中的 varImp 函数对不同的列进行排序
How to sort a different column from varImp function in R
我正在为 multiclass 使用 varImp(model, scale = FALSE) 函数,因为有三个 classes,所以得到了 20 个最重要变量的三列结果。
目前是按照第一列排序,但是有什么办法可以按照第二列排序吗?我尝试对其进行排序并转换为数据框,但它不起作用:无法将 class ‘“varImp.train”’ 强制转换为 data.frame.
我的猜测是您正在使用带插入符的 randomForest,否则 varImp()
函数将无法工作。
请在您的问题中提供此信息。
因此您可以存储 varImp() 结果并按以下顺序排序:
library(caret)
rf = train(Species ~ .,data=iris,method="rf",trControl=trainControl(method="cv"),importance=TRUE)
varImp(rf,scale=FALSE)
rf variable importance
variables are sorted by maximum importance across the classes
setosa versicolor virginica
Petal.Length 22.013 33.4341 27.738
Petal.Width 22.454 32.3445 30.897
Sepal.Length 6.649 8.6931 8.569
Sepal.Width 4.420 -0.8063 3.560
res = varImp(rf,scale=FALSE)$importance
按第二列排序,
res[order(res$versicolor,decreasing=TRUE),]
setosa versicolor virginica
Petal.Length 22.013431 33.434069 27.738319
Petal.Width 22.453571 32.344497 30.897214
Sepal.Length 6.649072 8.693132 8.569421
Sepal.Width 4.419712 -0.806256 3.559570
我正在为 multiclass 使用 varImp(model, scale = FALSE) 函数,因为有三个 classes,所以得到了 20 个最重要变量的三列结果。 目前是按照第一列排序,但是有什么办法可以按照第二列排序吗?我尝试对其进行排序并转换为数据框,但它不起作用:无法将 class ‘“varImp.train”’ 强制转换为 data.frame.
我的猜测是您正在使用带插入符的 randomForest,否则 varImp()
函数将无法工作。
请在您的问题中提供此信息。
因此您可以存储 varImp() 结果并按以下顺序排序:
library(caret)
rf = train(Species ~ .,data=iris,method="rf",trControl=trainControl(method="cv"),importance=TRUE)
varImp(rf,scale=FALSE)
rf variable importance
variables are sorted by maximum importance across the classes
setosa versicolor virginica
Petal.Length 22.013 33.4341 27.738
Petal.Width 22.454 32.3445 30.897
Sepal.Length 6.649 8.6931 8.569
Sepal.Width 4.420 -0.8063 3.560
res = varImp(rf,scale=FALSE)$importance
按第二列排序,
res[order(res$versicolor,decreasing=TRUE),]
setosa versicolor virginica
Petal.Length 22.013431 33.434069 27.738319
Petal.Width 22.453571 32.344497 30.897214
Sepal.Length 6.649072 8.693132 8.569421
Sepal.Width 4.419712 -0.806256 3.559570