如何在R的插入包中应用基于滤波器的特征选择进行逻辑回归?

San*_*ram 5 r feature-selection r-caret

我正在尝试在caret包中应用基于过滤器的特征选择以进行逻辑回归.我成功地使用sbf()随机森林和LDA模型的功能(分别使用rfSBFldaSBF).

我修改的方式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)
Run Code Online (Sandbox Code Playgroud)

这里,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)
}
Run Code Online (Sandbox Code Playgroud)

但在调用时logisticRegressionModelWithSBF我收到的错误是:

Error in { : task 1 failed - "inputs must be factors"
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?