我一直在尝试使用caret包对模型进行k折验证。我已经成功运行了lm()函数,但在尝试使用caret时却失败了。步骤如下:
train_control <- trainControl(method="cv", number=10) grid <- expand.grid(.fL=c(0), .usekernel=c(FALSE)) model <- train(FantasyPTS ~ Shoots + Height + Weight + Birthyear + age + Draft_Year + Overall_Draft_Num + Draft_Team + Draft_Age + GAA + SVPCT + GSAA + QS + QS. + RBS + GPS, data=nhlgoalies, trControl=train_control, method="lm", tuneGrid=grid)
结果是
Error in train.default(x, y, weights = w, ...) : The tuning parameter grid should have columns intercept
我一直认为模型本身应该生成截距。我从文档中了解到它需要截距参数,但我不知道如何在模型创建之前生成它?
回答:
你没有提供数据集的链接,所以我为示例生成了一个数据集。
## Make datancol <- 3Xs <- matrix(rnorm(300*ncol), nrow = 300, ncol = ncol) %>% as.tibble()Yvec <- rnorm(300)train_control <- trainControl(method="cv", number=10) ## Fit lm model using trainfit <- train(x= Xs, y = Yvec, method = "lm",trControl = train_control)
所以你只需不指定tuneGrid
参数就可以了。