«Ошибка: $ оператор недопустим для атомов атома c» в функции caret :: train - PullRequest
0 голосов
/ 31 января 2020

Я использовал R для науки о данных, и моя модель обучалась с использованием функции caret :: train ().

Но вот мои ошибки

control <- trainControl(method="cv", number=10)

lassogrid <- expand.grid(
    alpha=1, lambda=seq(0.001, 0.1, by=0.0005)
)

lasso_model <- train(x=train0[,-c(which(names(train0)=="SalePrice"))], 
                y=train0$SalePrice, method = "glmnet", trControl="control", 
               tuneGrid="lassogrid")

, затем ошибка, как показано ниже:

Ошибка: оператор $ недействителен для atomi c vector

Поскольку я искал в Google, похоже, это не связано с функцией поезда.

Но я не знаю, что на самом деле представляют атомы c. Поэтому, пожалуйста, дайте мне знать, почему и как решить эту проблему.

1 Ответ

0 голосов
/ 31 января 2020

Здесь ошибки trControl="control" и tuneGrid="lassogrid". Это должны быть trControl=control и tuneGrid=lassogrid, и не нужно указывать x и y. Поскольку вы не предоставили данные, я использую данные BostonHousing из пакета mlbench. Вы можете использовать следующий код

library(mlbench)
library(caret)

data <- BostonHousing

# create a list of 70% of the rows in the original dataset we can use for training
set.seed(123)
training <- sample(nrow(data), 0.7 * nrow(data))

train0 <- data[training,]
test0 <- data[-training,]


control <- trainControl(method="cv", number=10)

lassogrid <- expand.grid(
  alpha=1, lambda=seq(0.001, 0.1, by=0.0005)
)


lasso_model <- train(medv~., data= train0, method="glmnet", trControl=control, 
                     tuneGrid=lassogrid)

Вместо medv, просто используйте SalePrice для своих данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...