0

我有一个 30 行和 850 列(特征)的数据框。当我想将 svm 或其他分类器与 caret 和 e1071 包一起使用时,我遇到了这个错误!

Error in terms.formula(formula, data = data) : 
  duplicated name 'X10Percentile' in data frame using '.'
即使我想使用诸如Boruta之类的特征选择方法,我也面临同样的错误。我仔细检查了我的功能并没有发现任何东西。我认为我必须在数据框中具有相同的列名,所以我创建了一个示例数据并检查如下:

test<-data.frame("w1"=c(1:6),"w1.1"=c(2:7),"w1"=c(3:8), "ta"=c("T","F","T","F","F","T"))

set.seed(100)
train <- createDataPartition(y=test$ta,p=0.6,list = FALSE)
TrainSet <- test[train,]
TestSet <- test[-train,]

trcontrol_rcv<- trainControl(method="cv", number=10) 

 svm_test<-svm(ta ~., data=TrainSet,trControl=trcontrol_rcv)

它工作得很好,没有错误发生。 正如我所见,当测试数据甚至具有完全相同的列名时,不会发生错误。我想知道为什么我的数据会出现此错误“terms.formula(formula, data = data) 中的错误:使用 '.' 在数据框中重复名称 'X10Percentile'”,我该如何消除它?先感谢您。

4

2 回答 2

0

谢谢大家。幸运的是,我找到了这个错误的原因。因为 R 将变量视为因素。因此它制作了一个数据。框架(实际上是一个列表)。为了解决这个问题,我通过以下方式将其转换为数据数字;

test1<-sapply(test,function(x) as.numeric(as.character(x)))

于 2018-05-06T04:46:23.140 回答
0

对我来说,这不是解决方案,我有一个 LargeMatrix 作为只有数字类型向量的对象。

问题是有些dimnames(MyLargeMatrix)是重复的。我改变了它们,错误就消失了。

于 2020-01-25T09:39:02.987 回答