事实上,有一个类似的问题和答案,但它不起作用。见下文。诀窍在于重写lmFunc
。
"错误{:任务1失败 - "结果没有相同的长度",许多警告:glm.fit:拟合概率数字0或1发生"
故障在哪里?
lmFuncs$fit=function (x, y, first, last, ...)
{
tmp <- as.data.frame(x)
tmp$y <- y
glm(y ~ ., data = tmp, family=binomial(link='logit'))
}
ctrl <- rfeControl(functions = lmFuncs,method = 'cv',number=10)
fit.rfe=rfe(df.preds,df.depend, rfeControl=ctrl)
在rfeControl帮助中,据说参数&#39;功能&#39;可以与插入符号的列车功能(caretFuncs)一起使用。它到底意味着什么? 任何细节和例子?谢谢
答案 0 :(得分:0)
自定义lmFunc时遇到类似的问题。
对于逻辑回归,请确保使用 lr Func,并将大小设置为等于预测变量的数量。这不会导致任何问题。
示例(仅出于功能目的)
library(caret)
#Reproducible data
set.seed(1)
x <- data.frame(runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10),runif(10))
x$dpen <- sample(c(0,1), replace=TRUE, size=10)
x$dpen <- factor(x$dpen)
#Spliting training set into two parts based on outcome: 80% and 20%
index <- createDataPartition(x$dpen, p=0.8, list=FALSE)
trainSet <- x[ index,]
testSet <- x[-index,]
control <- rfeControl(functions = lrFuncs,
method = "cv", #cross validation
verbose = FALSE, #prevents copious amounts of output from being produced.
)
##RFE
rfe(trainSet[,1:28] #predictor varia,
trainSet[,9],
sizes = c(1:28) #size of predictor variables,
rfeControl = control)