首页 文章

y [火车] glmnet中的套索错误

提问于
浏览
0

我在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,权重)出错:'x'和'w'必须具有相同的长度

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

weighted.mean.default(y,权重)出错:'x'和'w'必须具有相同的长度}

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

1 回答

  • 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)
    

相关问题