我正在尝试使用 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'
我错过了什么吗?