【问题标题】:Logistic Regression with glmnet - structure of input data使用 glmnet 的逻辑回归 - 输入数据的结构
【发布时间】:2020-11-12 02:31:49
【问题描述】:

我正在尝试将 Ridge 和 Lasso 回归应用于逻辑回归模型,并且正在努力理解 x 和 y 输入所需的结构。我对 R 很陌生,所以很抱歉,我希望这很清楚。我相信我们正在使用 x 中的列中的值来预测 y 中的结果

对于 x,我有七列,每列都是分类数据(作为因子)。整个 x 是一个数据框,包含 7 个变量的 9000 个观察值,每个变量都是一个具有不同水平的因子。这出现在数据下的环境中

对于 y,它是一组结果 - “0”或“1” - 在环境中显示为 Values,表示 y 是具有 2 个级别“0”“1”的因子,也有 9000 个值

努力弄清楚“结构 x 和 y 需要是什么才能使以下内容适用于逻辑模型

alpha0.fit <- cv.glmnet(x, y , type.measure="deviance", alpha=0, family="binomial")

感谢您的任何想法或建议。

【问题讨论】:

  • x 应该是一个数字矩阵,因此您需要将分类预测变量编码为数字。必须简单的方法是使用虚拟编码:new.x &lt;- model.matrx(~., x)。然后使用new.x 作为 glmnet 的输入。
  • 抱歉耽搁了 - 但这很好用。谢谢!

标签: r logistic-regression glmnet


【解决方案1】:

您可以使用 cmets 中建议的虚拟编码,也可以使用 glmnetUtils 来处理这个问题:

library(glmnetUtils)
x = data.frame(x1 = sample(c("A","B","C"),9000,replace=TRUE),
               x2 = sample(c("D","E"),9000,replace=TRUE),
               x2 = sample(c("F","G","H"),9000,replace=TRUE)
               )

y = factor(sample(0:1,9000,replace=TRUE))

fit = cv.glmnet(y ~ .,data=data.frame(x,y),family="binomial",alpha=0)

【讨论】:

    猜你喜欢
    • 2018-07-19
    • 2020-11-05
    • 2015-07-11
    • 2015-09-06
    • 2017-10-06
    • 2019-12-24
    • 2021-02-12
    • 2015-06-30
    • 2020-12-09
    相关资源
    最近更新 更多