我使用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
您的数据即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句