我已经通过 R 中的 caret 包创建了六个模型。其中两个模型(SVM 和 pcaNN)表现良好,我想看看它们如何对功能进行不同的排序。 varImp 函数应该能够为我提供此信息,但是当我运行此函数时,出现以下错误:
varImp_pcaNN = varImp(svmMod) Warning in mean.default(y, rm.na = TRUE) : argument is not numeric or logical: returning NA Error in y - mean(y, rm.na = TRUE) : non-numeric argument to binary operator
以前版本的caret,目前使用6.0-94版本,没有出现这个错误。当使用基于树的模型、XGB 和 RF 时,我没有收到相同的错误;该函数按预期工作,并生成一个特征列表及其相关的重要性值。
我使用以下代码来创建每个模型(在适当的时候替换方法字符串):
set.seed(420) svmMod <- train(Class ~ ., data = train_dataset, method = "svmRadial", tuneLength = TuneLength, importance = TRUE, trControl = train.control)
我曾尝试安装以前版本的插入符号,但可惜我没有成功地正确安装以前的版本。
还有其他人遇到过同样的问题吗?你怎么修好它的? 我尝试在三个不同版本的 R 上解决这个问题: 4.2.1 4.2.2 4.3.0 全部带有以下版本的插入符: 6.0-94
那么为什么错误与实际原因如此不同?至少它应该在错误消息中暗示与因素相关的问题,它正在打印。我确信代码中一定有一些深层的东西,在与因子相关的问题之前出现了这个与二进制相关的问题,但不知何故,它应该提供更多信息。
我见过这种错误,其实际原因是“不是因子形式”,但是,R 抛出了“下标越界”错误,新手开始担心数据维度。
PS:我没有足够的积分来发表评论。