R插入符号包错误-至少有一个类级别不是有效的R变量名

R插入符号包错误-至少有一个类级别不是有效的R变量名,r,error-handling,r-caret,ensemble-learning,R,Error Handling,R Caret,Ensemble Learning,使用插入符号包堆叠时,我在R中收到以下错误 错误:至少有一个类级别不是有效的R变量名;当生成类概率时,这将导致错误,因为变量名将转换为not5,X5sets。请使用可用作有效R变量名的因子级别(有关帮助,请参阅?make.names) 下面是我试图运行的代码 library(caretEnsemble) control <- trainControl(method="repeatedcv", number=10, repeats=3, savePredictions=TRUE, class

使用插入符号包堆叠时,我在R中收到以下错误

错误:至少有一个类级别不是有效的R变量名;当生成类概率时,这将导致错误,因为变量名将转换为not5,X5sets。请使用可用作有效R变量名的因子级别(有关帮助,请参阅?make.names)

下面是我试图运行的代码

library(caretEnsemble)
control <- trainControl(method="repeatedcv", number=10, repeats=3, savePredictions=TRUE, classProbs=TRUE)
algorithmList <- c('rpart', 'knn', 'svmRadial')
set.seed(222)
models <- caretList(Tsets ~ MatchSurface + MatchRound + AgeDiff + SameHand + HeightDiff, data=up_sample, trControl=control, methodList=algorithmList)
results <- resamples(models)
库(caretEnsemble)

control尝试将目标变量更改为“是”/“否”,而不是1/0。

当caretList()运行基于树的模型(此处为rpart,但也适用于随机林)时,它会将因子级别转换为用于拆分树的变量。 对于这些变量,不允许名称以数字开头,也不允许名称包含空格。 因此,对于这些变量中的每一个,您都可以使用以下代码将级别名称转换为有效标签

up_sample %>% 
  mutate(Tsets = factor(Tsets, 
                        labels = make.names(levels(Tsets))))

您必须更改列车控制选项 尝试更改的值

classProbs = F
或者您必须将输出变量的级别更改为“是/否”,而不是“1/0”


更改
Tsets
列中的级别名称,使其不以数字开头。是否查看了
?如错误消息所示生成.names
?它解释了列名有效所需的条件。错误消息还明确指出,
“5sets”
将不是有效的列名;运行
make.names(c(“not5”、“5sets”)
亲自查看
levels(var)=c("Yes","No")