Я пытаюсь ранжировать функции по важности, используя функцию varImp из пакета caret. Вот что у меня есть:
ctrl <- trainControl(method = "LGOCV", savePred=T)
mod <- train(Group~., data=metrics, method = "svmLinear", trControl = ctrl)
importance <- varImp(mod, scale=FALSE)
Но функция varImp выдает мне эту ошибку в Traceback:
Error: $ operator is invalid for atomic vectors
5.
FUN(newX[, i], ...)
4.
apply(x, 2, testFunc, y = y)
3.
filterVarImp(x_dat, y_dat, nonpara = nonpara, ...)
2.
varImp.train(mod, scale = FALSE)
1.
varImp(mod, scale = FALSE)
Я думал, что сделал все так же, как и документация. Я новичок в R и Карет, так что это действительно смущает меня. Любая помощь приветствуется, спасибо заранее.
Редактировать: Спасибо за рекомендации по вопросу! Что касается набора данных, я думаю, что я не могу публиковать его где-либо, поэтому я вручную создал меньшую матрицу, которая по-прежнему воспроизводит ошибку, описанную выше.
Group f1 f2 f3 f4 f5
0 5377.8 3506.9 1999.3 1659.9 448.7
0 7963.4 4016 931.2 970 468
0 5175.2 2449.8 802 1191.7 110.2
0 6542 2198 938.8 965.5 115.1
1 5641.2 3936.1 1639.5 1206 520.7
1 8136.8 3527.7 1931 1765.1 582.4
1 7195.5 2496.2 1650.8 1387 406.3
и я использовал
metrics$Group <- as.factor(metrics$Group)
для установки столбца группы в качестве категориальных переменных.