"Error: $ operator is invalid for atomic vectors" in caret::train function
"Error: $ operator is invalid for atomic vectors" in caret::train function
我将 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")
然后出现如下错误:
Error: $ operator is invalid for atomic vector
正如我在 Google 中搜索的那样,这似乎不是火车功能造成的。
但我不知道原子向量到底是什么。所以请让我知道为什么以及如何解决这个问题。
错误在这里 trControl="control"
和 tuneGrid="lassogrid"
。它应该是 trControl=control
和 tuneGrid=lassogrid
并且不需要指定 x 和 y。由于您没有提供数据,我使用的是 mlbench
包中的 BostonHousing
数据。您可以使用以下代码
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
作为您的数据。
我将 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")
然后出现如下错误:
Error: $ operator is invalid for atomic vector
正如我在 Google 中搜索的那样,这似乎不是火车功能造成的。
但我不知道原子向量到底是什么。所以请让我知道为什么以及如何解决这个问题。
错误在这里 trControl="control"
和 tuneGrid="lassogrid"
。它应该是 trControl=control
和 tuneGrid=lassogrid
并且不需要指定 x 和 y。由于您没有提供数据,我使用的是 mlbench
包中的 BostonHousing
数据。您可以使用以下代码
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
作为您的数据。