【问题标题】:Lasso regression glmnet assigning Y value.套索回归 glmnet 分配 Y 值。
【发布时间】:2018-11-25 06:58:41
【问题描述】:

好的,我正在做 LASSO 回归,但我的 Y 术语有问题。 我知道我的 X 必须是一个矩阵,而 y 必须是数字。 我的套装就是这种情况。但是我觉得我的模型运行不正常。我首先向您展示我做了什么,然后是我认为应该做什么(但不知道该怎么做)。

所以我所做的如下。我在这个例子中使用了来自 R 的核数据集。

library(boot)
data("nuclear")
attach(nuclear)
nuclear <- as.matrix(nuclear)

所以我将它转换为矩阵。然后我在 x 和 y 上使用了我的矩阵。

CV = cv.glmnet(x=nuclear,y=nuclear, family="multinomial", type.measure = "class", alpha = 1, nlambda = 100)

但是我觉得我的 Y 轴不正确。我觉得我的因变量应该在那里。但是我怎么把它弄到那里呢?假设 nucleus$pt 是我的因变量。将nuclear$pt 用于Y 不起作用。

plot(CV)

fit = glmnet(x=nuclear, y=nuclear, family = "multinomial" , alpha=1, lambda=CV$lambda.1se)

如果我然后运行它,感觉我的模型根本没有运行。可能我的 Y 有点想念,但我不能指望它。

【问题讨论】:

    标签: r regression glmnet lasso-regression


    【解决方案1】:

    您对 x 和 y 使用了相同的矩阵。您必须以某种方式分离自变量和因变量。例如,您可以使用索引来选择变量:

    cv.glmnet(x=nuclear[, 1:10],y=nuclear[, 11], family="binomial", 
       type.measure = "class", alpha = 1, nlambda = 100)
    

    这将使用核的前 10 列作为自变量,第 11 列作为因变量。

    【讨论】:

    • 成功了,非常感谢。现在我将尝试对我的真实模型做同样的事情。我会告诉你进展如何。
    • 嗯,在我自己的模型中,我得到了错误; “cbind2(1, newx) %*% nbeta 中的错误:dup_mMatrix_as_dgeMatrix 的无效类 'NA' 我知道你已经帮了我很多,它并不真正属于这个具体的例子,但知道如何解决这个问题吗?
    • @Thundersheep 不知道。您可能应该将其作为一个新问题提出,但前提是您可以使其可重现。
    • 是的,不幸的是,我无法让它重现。我想我必须自己弄清楚。不过感谢您的帮助。
    • @Thundersheep 看起来你那里有一些不应该存在的 NA(“无效的类 NA”),但这是你自己弄清楚的。
    猜你喜欢
    • 2020-10-23
    • 2020-11-05
    • 2017-05-03
    • 2021-02-12
    • 2016-06-28
    • 2019-09-19
    • 2017-10-06
    • 1970-01-01
    • 2012-07-06
    相关资源
    最近更新 更多