0

我正在尝试使用 Caret 为“knn”和“svmRadial”方法执行 varImp 函数。我获得了两个模型(knn 和 svmRadial),但是当我尝试使用它们执行 varImp 函数时,我的屏幕上会出现以下错误消息:

model.frame.default 中的错误(公式 = y ~ x,na.action = na.omit,drop.unused.levels = TRUE):变量“y”的类型(列表)无效

knn 模型模型和 varImp 函数的 R 块如下:

KNN模型

set.seed(9)
grid_knn <- expand.grid(.k = c(3, 5, 7, 10, 15))

modelo_knn <- train(PER~., data=datos_entrenamiento, method="knn", preProc = c("center", "scale"), metric=metric,tuneGrid=grid_knn, trControl=control)

modelo_knn

输出

k-Nearest Neighbors 

1433 samples
   9 predictor

Pre-processing: centered (28), scaled (28) 
Resampling: Cross-Validated (5 fold, repeated 5 times) 
Summary of sample sizes: 1146, 1146, 1148, 1146, 1146, 1146, ... 
Resampling results across tuning parameters:

  k   RMSE      Rsquared   MAE     
   3  292.8288  0.3743854  37.60947
   5  300.1049  0.3013125  38.34929
   7  290.5655  0.2852039  37.64221
  10  280.7362  0.2525091  37.06593
  15  278.3909  0.1788722  38.38813

RMSE用于使用最小值选择最佳模型。用于模型的最终值为k = 15.

带有 Knn 模型的 varImp 函数

var_imp_knn <- varImp(modelo_knn)
var_imp_knn

输出

model.frame.default 中的错误(公式 = y ~ x,na.action = na.omit,drop.unused.levels = TRUE):变量“y”的类型(列表)无效

谁能帮我理解这个错误的原因以及如何解决它?

此致

4

0 回答 0