Сортировка выходных данных по значимости переменной (пакет каретки) - PullRequest
0 голосов
/ 12 июня 2018

Я строю несколько моделей логистической регрессии и использую функцию varImp ('имя модели') из пакета caret.Эта функция была полезной, но я бы предпочел, чтобы значение переменной возвращалось в порядке от наиболее важного к наименее важному.

Вот воспроизводимый пример:

library(caret)
data("GermanCredit")

Train <- createDataPartition(GermanCredit$Class, p=0.6, list=FALSE)
training <- GermanCredit[ Train, ]
testing <- GermanCredit[ -Train, ]

mod_fit <- glm(Class ~ Age + ForeignWorker + Property.RealEstate +Housing.Own + CreditHistory.Critical, data=training, family=binomial(link = 'logit'))

Когда я использую код:

varImp(mod_fit)

Возвращает:

                        Overall
Age                    1.747346
ForeignWorker          1.612483
Property.RealEstate    2.715444
Housing.Own            2.066314
CreditHistory.Critical 3.944768

Я хочу отсортировать по столбцу «Общий», как это:

sort(varImp(mod_fit)$Overall)

Возвращает:

[1] 1.612483 1.747346 2.066314 2.715444 3.944768

Есть ли способ вернуть имя переменной и уровень важности вместе, отсортированные в порядке убывания?

Заранее спасибо.

1 Ответ

0 голосов
/ 12 июня 2018
library(caret)
data("GermanCredit")

Train <- createDataPartition(GermanCredit$Class, p=0.6, list=FALSE)
training <- GermanCredit[ Train, ]
testing <- GermanCredit[ -Train, ]

mod_fit <- glm(Class ~ Age + ForeignWorker + Property.RealEstate +Housing.Own + CreditHistory.Critical, data=training, family=binomial(link = 'logit'))

imp <- as.data.frame(varImp(mod_fit))
imp <- data.frame(overall = imp$Overall,
           names   = rownames(imp))
imp[order(imp$overall,decreasing = T),]
    overall                  names
 3.9234999 CreditHistory.Critical
 3.1402835            Housing.Own
 2.1955440                    Age
 1.3042088          ForeignWorker
 0.4878837    Property.RealEstate
...