我正在尝试在caret
包中应用基于过滤器的功能选择以进行逻辑回归。我成功地将sbf()
函数用于随机林和LDA模型(分别使用rfSBF
和ldaSBF
)。
我修改lmSBF
的方式如下:
# custom lmSBF
logisticRegressionWithPvalues <- lmSBF
logisticRegressionWithPvalues$score <- pScore
logisticRegressionWithPvalues$summary <- fiveStats
logisticRegressionWithPvalues$filter <- pCorrection
logisticRegressionWithPvalues$fit <- glmFit
# my training control parameters for sbf (selection by filter)
myTrainControlSBF = sbfControl(method = "cv",
number = 10,
saveDetails = TRUE,
verbose = FALSE,
functions = logisticRegressionWithPvalues)
# fit the logistic regression model
logisticRegressionModelWithSBF <- sbf(x = input_predictors,
y = input_labels,
sbfControl = myTrainControlSBF)
这里,glmFit
函数(如上所述)如下:
# fit function for logistic regression
glmFit <- function(x, y, ...) {
if (ncol(x) > 0) {
tmp <- as.data.frame(x)
tmp$y <- y
glm(y ~ ., data = tmp, family = binomial)
}
else nullModel(y = y)
}
但是在调用logisticRegressionModelWithSBF
时我收到的错误是:
Error in { : task 1 failed - "inputs must be factors"
我做错了什么?