Как отсортировать другой столбец из функции varImp в R

Я использую функцию varImp(model, scale = FALSE) для мультикласса и получил результат из 20 наиболее важных переменных с тремя столбцами, поскольку существует три класса. В настоящее время он отсортирован по первому столбцу, но есть ли способ отсортировать его по второму столбцу? Я попытался отсортировать его и преобразовать в фрейм данных, это не работает: невозможно принудить класс «varImp.train» к фрейму данных.


person musik lover    schedule 06.11.2020    source источник
comment
Можете ли вы предоставить воспроизводимый пример и показать ожидаемый результат для него?   -  person Ronak Shah    schedule 06.11.2020


Ответы (1)


Я предполагаю, что вы используете 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
person StupidWolf    schedule 06.11.2020
comment
Большое спасибо! - person musik lover; 07.11.2020