2017-10-13 16 views
0

J'ai essayé d'utiliser l'ensemble caret pour effectuer la validation des plis en k d'un modèle. J'ai couru lm() à un certain succès, mais quand j'essaye de le faire avec caret, ça échoue. étapes:Génération du paramètre d'accord pour Caret dans R

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) 

résultats dans

Error in train.default(x, y, weights = w, ...) : 
    The tuning parameter grid should have columns intercept 

ma compréhension a toujours été que le modèle lui-même devrait générer l'interception. Je sais à la lecture des docs qu'il a besoin de l'interception de paramètre mais je ne sais pas comment le générer avant que le modèle lui-même ne soit créé?

+0

essayez de donner une valeur d'interception aléatoire et vérifiez –

Répondre

1

Vous ne donnez pas de lien vers un ensemble de données, donc je génère mon exemple par exemple.

## Make data 
ncol <- 3 
Xs  <- matrix(rnorm(300*ncol), nrow = 300, ncol = ncol) %>% as.tibble() 
Yvec  <- rnorm(300) 
train_control <- trainControl(method="cv", number=10) 

    ## Fit lm model using train 
fit <- train(x= Xs, y = Yvec, method = "lm",trControl = train_control) 

Alors que vous venez de ne pas besoin de spécifier tuneGrid paramètre et sera ok.

+0

ok, cela fonctionne bien, et je comprends pourquoi mon ajout d'un tuneGrid sans l'inter param a fait échouer l'appel, mais je suis curieux de savoir comment/pourquoi lorsque les gens utilisent tuneGrid et pourquoi c'est quelque chose que l'on utiliserait? Fondamentalement, comment décide-t-on de le faire et de l'utiliser ou non et comment cela change-t-il la performance? – ike