使用插入符号包进行堆叠时,我在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)
当我删除classProbs=TRUE
时,代码会运行,但是我想保留它,因为在此之后我需要运行其他代码。我所有的变量都是因数或整数,并且我更改了所有类,因此它们没有“ 0”和“ 1”。因此,我无法弄清楚为什么代码无法运行。
我在下面附上了数据结构的图片。如果有人提出建议,那就太好了。
谢谢, 过道
答案 0 :(得分:0)
尝试将目标变量更改为“是” /“否”,而不是1/0。
答案 1 :(得分:0)
当caretList()运行基于树的模型(此处为rpart,但也适用于随机森林)时,它将因子级别转换为用于拆分树的变量。 对于这些变量,不允许以数字开头的名称,也不能包含空格。 因此,对于这些变量中的每一个,您都可以使用以下代码将级别名称转换为有效的标签。
up_sample %>%
mutate(Tsets = factor(Tsets,
labels = make.names(levels(Tsets))))
答案 2 :(得分:0)
您必须更改列车控制选项 尝试改变
的值classProbs = F
或者您必须将输出变量的级别更改为“是/否”而不是“1/0”
levels(var)=c("Yes","No")