caret的rfe函数中出现了下标越界错误

3

我试图使用Caret的rfe函数进行特征选择。我的代码在几天前还能正常工作。现在我遇到了一个下标越界错误。奇怪的是,我可以毫无问题地使用来自另一个包的一些内置数据运行rfe函数,这对我来说意味着这可能是我的数据有问题(但我无法弄清楚问题出在哪里)。有什么建议吗?

工作

加载库

library(mlbench)
library(caret)
library(randomForest)

加载数据

data(PimaIndiansDiabetes)

使用随机森林选择函数定义控制。

control <- rfeControl(functions=rfFuncs2, method="cv", number=10)

运行RFE算法

results <- rfe(PimaIndiansDiabetes[,1:8], PimaIndiansDiabetes[,9], sizes=c(1:8), rfeControl=control)

无法工作

results<-rfe(stores[,10:33], stores[,8],sizes=c(1:24), rfeControl=control)

我的数据框架"stores"包含一些连续变量(10:33),以及一个分组变量(8)

有什么想法吗?

错误信息


嗨,请定义rfFuncs2,这将有助于复制您完全相同的结果。 - Anup Tirpude
2个回答

2

我遇到了同样的问题,您可以尝试使用 as.factor(unlist(stores[,8]))


1

这个错误表明您的 'y' 变量(例如,stores[,8])被编码为字符而不是因子变量。使用以下代码片段将字符转换为因子,然后 RFE 就可以运行了:stores[,8] <- as.factor(stores[,8])


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接