gpt4 book ai didi

R 的插入符号包中的 rfe 给出错误为 : task 1 failed - "argument 1 is not a vector"

转载 作者:行者123 更新时间:2023-12-03 16:43:38 31 4
gpt4 key购买 nike

我有一个 training_predictors设置 56 列 ,都是numeric . training_labelsfactor 0 的向量和 1 .

我使用以下列表作为要测试的子集大小。

subset_sizes <- c(1:5, 10, 15, 20, 25)

以下是修改后的列表 rfFuncs职能。
rfRFE <- list(summary = defaultSummary, 
fit = function(x, y, first, last, ...) {
library(randomForest)
randomForest(x, y, importance = first, ...)
},
pred = function(object, x) predict(object, x),
rank = function(object, x, y) {
vimp <- varImp(object)
vimp <- vimp[order(vimp$Overall, decreasing = TRUE),,drop = FALSE]
vimp$var <- rownames(vimp)
vimp
},
selectSize = pickSizeBest,
selectVar = pickVars)

我已将控制函数声明为:
rfeCtrl <- rfeControl(functions = rfRFE, 
method = "cv",
number = 10,
verbose = TRUE)

但是当我运行 rfe功能如下图,
rfProfile <- rfe(training_predictors, 
training_labels,
sizes = subset_sizes,
rfeControl = rfeCtrl)

我收到一个错误:
Error in { : task 1 failed - "argument 1 is not a vector"

我也尝试改变向量 subset_sizes ,但仍然没有运气。我究竟做错了什么?

更新:我试着一一运行这些步骤,问题似乎出在 rank功能。但我仍然无法弄清楚问题所在。

更新:我发现了问题所在。 varImp排名函数中不包含 $Overall .但它包含名称为 0 的列和 1 .为什么会这样?什么 01表示(顺便说一下,两个列值完全相同)?另外,我该如何制作 varImp返回 $Overall柱子? [作为临时解决方案,我正在创建一个新列 $Overall并将其附加到 vimprank功能。]

最佳答案

使用 01因为因子水平是有问题的,因为它们不是有效的 R 列名称。在您的其他 SO 帖子中,您可能会收到一条关于将这些用作输出因子水平的消息。

尝试使用具有更多信息级别的因子结果,这些级别可以转换为有效的 R 列名称(对于类概率)。

关于R 的插入符号包中的 rfe 给出错误为 : task 1 failed - "argument 1 is not a vector",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30663205/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com