glmnet培训抛出x上的错误,Y数据帧参数:我使用它错了吗?(glmnet training th

2019-10-23 07:08发布

我想学习一罚逻辑回归分析法glmnet。 我试图预测,如果从mtcars例如数据的车将有一个自动变速器或手动。 我想,我的代码是非常简单的,但我似乎得到一个错误:

这个第一块简单地分割mtcars到80%的训练集和20%的测试集

library(glmnet)
attach(mtcars)

smp_size <- floor(0.8 * nrow(mtcars))

set.seed(123)
train_ind <- sample(seq_len(nrow(mtcars)), size=smp_size)

train <- mtcars[train_ind,]
test <- mtcars[-train_ind,]

我知道在x数据被认为是在没有响应的矩阵形式,所以两个训练集合分离成非响应矩阵(train_x)和响应向量(train_y)

train_x <- train[,!(names(train) %in% c("am"))]
train_y <- train$am

但是,试图训练模型时,

p1 <- glmnet(train_x, train_y)

我得到的错误:

Error in elnet(x, is.sparse, ix, jx, y, weights, offset, type.gaussian,
:(list) object cannot be coerced to type 'double'

我缺少的东西吗?

Answer 1:

强迫第一个参数为矩阵解决了我:

p1 <- glmnet(as.matrix(train_x), train_y)

事实上,形成glmnet? 看起来,第一个参数应该是一个矩阵/稀疏矩阵:

X:输入矩阵尺寸NOBS X nvars的; 每行是一个观察矢量。 可以是稀疏矩阵格式 (从类“稀疏矩阵”作为继承在包矩阵;尚未可供家庭=“COX”)



文章来源: glmnet training throws error on x,y dataframe arguments: am I using it wrong?