【问题标题】:Simple Logistic Regression in a Loop?循环中的简单逻辑回归?
【发布时间】:2020-06-16 16:25:26
【问题描述】:

我有一堆用于多元逻辑回归的特征,但我想单独测试每个特征以进行多个单变量逻辑回归。

我正在尝试像这样循环

features <- c("f1","f2","f3","f4")
out <- list()
for (f in features) {
    mod <- train(form = positive ~ f,
                 data = training,
                 method = "glm",
                 metric = "ROC",
                 family = "binomial")
    out <- append(out,mod)
}

我收到一条错误消息,指出可变长度不同(为“f”找到)。我认为它没有将 f 识别为列名?我该如何解决这个问题?

【问题讨论】:

  • 什么是features?请发帖minimal reproducible example
  • 已更新。它们只是 DF 的特征名称的字符串。
  • 变量需要插入到公式对象中。一种方法是使用as.formula,例如。 as.formula(paste("positive ~", f))

标签: r machine-learning logistic-regression


【解决方案1】:

为了将来参考,使用与@Rorschach 提出的相同解决方案的代表的答案:

x <- runif(50, min = 0, max = 100) 
z <- runif(50, min = 0, max = 100)
a <- runif(50, min = 0, max = 100)
b <- runif(50, min = 0, max = 100)
positive <- rbinom(50,1, 0.4)

training <- as.data.frame(cbind(x,z,a,b,positive = positive))
training$positive <- factor(training$positive)

library(caret)
features <- c("x","z","a","b")
out <- list()
for (f in features) {
  mod <- train(form = as.formula(paste("positive ~ ", f)),
               data = training,
               method = "glm",
               family = "binomial")

    out <- append(out,mod)
}

【讨论】:

    猜你喜欢
    • 2018-04-10
    • 1970-01-01
    • 2012-02-29
    • 2016-07-11
    • 2012-11-05
    • 2017-02-24
    • 2017-09-11
    • 1970-01-01
    • 2021-06-18
    相关资源
    最近更新 更多