“错误:$运算符对于原子向量无效”在插入符号:: train函数中

问题描述 投票:0回答:1

我使用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中搜索时,这似乎不是由于火车功能。

但是我不知道实际上是什么原子向量。因此,请让我知道为什么以及如何解决此问题。

r atomic operator-keyword caret
1个回答
0
投票

错误在这里trControl="control"tuneGrid="lassogrid"。它应该是trControl=controltuneGrid=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作为数据。

© www.soinside.com 2019 - 2024. All rights reserved.