我使用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")
然后出现如下错误:
错误:$运算符对于原子向量无效
当我在Google中搜索时,这似乎不是由于火车功能。
但是我不知道实际上是什么原子向量。因此,请让我知道为什么以及如何解决此问题。
错误在这里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
作为数据。