【问题标题】:Lasso error in glmnet for y[train]y[train] 的 glmnet 中的套索错误
【发布时间】:2017-05-03 00:07:57
【问题描述】:

我对 R 中的 glmnet 包有疑问。我正在尝试使用它,但遇到以下问题: {

 > names(mtcars)

#lasso
## 75% of the sample size


 > smp_size <- floor(0.75 * nrow(mtcars))

## set the seed to make your partition reproductible
> set.seed(123)

> train_ind <- sample(seq_len(nrow(mtcars)), size = smp_size)

> train <- mtcars[train_ind, ]

> names(train)

> y<-train["hp"]

> c(y)

> yvector<-c(y)

> is.vector(yvector)

> grid=10^seq(10,-2,length=24)

> lasso.mod=glmnet(train,yvector, alpha=1, lambda=grid)

glmnet (train, yvector, alpha = 1, lambda = grid) 中的错误:数字 y (1) 中的观察值不等于 x (24) 的行数

> lasso.mod=glmnet(train,y, alpha=1, lambda=grid)

weighted.mean.default(y, weights) 中的错误:'x' 和 'w' 必须有 一样长

> lasso.mod=glmnet(train,train, alpha=1, lambda=grid)

weighted.mean.default(y, weights) 中的错误:'x' 和 'w' 必须有 长度一样 }

每次我将最后一行(glmnet程序)更改为y(输入相同长度的矩阵或向量)时,都会重复最后三个错误!!!我该怎么办?

【问题讨论】:

    标签: r lambda glmnet


    【解决方案1】:

    在这一行

    y <- train["hp"]
    

    结果是一个包含一个变量 (hp) 的数据框。你想要的是提取那个变量到一个向量中:

    y <- train[["hp"]]
    # or
    y <- train$hp
    

    您还可以使用我的glmnetUtils 包来处理设置响应向量和模型矩阵的机制。

    devtools::install_github("hong-revo/glmnetUtils")
    library(glmnetUtils)
    lasso.mod <- glmnet(hp ~ ., data=train, alpha=1, lambda=grid)
    

    【讨论】:

      猜你喜欢
      • 2023-03-05
      • 2018-11-25
      • 2021-02-12
      • 2014-09-08
      • 2012-07-06
      • 2016-11-27
      • 2020-11-05
      • 2014-07-10
      • 2019-07-12
      相关资源
      最近更新 更多