San*_*ram 5 r feature-selection r-caret
我正在尝试在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)
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)
我究竟做错了什么?