AI5*_*963 1 regression r dataframe glmnet
我正在尝试使用 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,]
Run Code Online (Sandbox Code Playgroud)
我知道 x 数据应该是没有响应的矩阵形式,所以我将两个训练集分成一个无响应矩阵 (train_x) 和一个响应向量 (train_y)
train_x <- train[,!(names(train) %in% c("am"))]
train_y <- train$am
Run Code Online (Sandbox Code Playgroud)
但是当试图训练模型时,
p1 <- glmnet(train_x, train_y)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Error in elnet(x, is.sparse, ix, jx, y, weights, offset, type.gaussian,
:(list) object cannot be coerced to type 'double'
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
强制第一个参数作为矩阵解决我:
p1 <- glmnet(as.matrix(train_x), train_y)
Run Code Online (Sandbox Code Playgroud)
事实上, formglmnet?看起来第一个参数应该是一个矩阵/稀疏矩阵:
x:输入矩阵,维度为 nobs x nvars;每行是一个观察向量。可以采用稀疏矩阵格式(从 Matrix 包中的“sparseMatrix”类继承;尚不适用于 family="cox")