Я пытаюсь изучить метод регрессионной логистики с использованием glmnet. Я пытаюсь предсказать, будет ли автомобиль с примерами данных mtcars иметь автоматическую коробку передач или руководство. Я думаю, что мой код довольно прост, но я, кажется, получаю сообщение об ошибке:glmnet training бросает ошибку на x, y аргументы dataframe: я использую это неправильно?
Это первый блок просто разбивает 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,]
Я знаю, что х данные должны быть в матричной форме без ответа, поэтому я разделить два учебных комплектов в матрицу без ответа (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'
я упускаю что-то?
Не ' attach'. Это плохая привычка, которая может вызвать у вас неприятности, и вы даже не используете ее в коде, который вы разделяете! – Gregor
Итак ... Я не уверен, что вы думаете, что вы сделали, чтобы превратить ваши ковариаты в матрицу. Матрица - это другая структура данных. Вы не можете получить его, просто подмножая фрейм данных. – joran
Вы посмотрели 'cv.glmnet'? Он выполняет автоматическое k-кратное CV. – Vlo