2016-12-19 1 views
3

La fonction caret::train() a un paramètre explicite method, pour lequel nous pouvons spécifier la méthode d'apprentissage automatique à utiliser (comme MASS::polr). En outre, caret::train() vous permet de transmettre des paramètres à la fonction de méthode via le paramètre ... (points).Passage de paramètres à des points qui sont en conflit avec des paramètres explicites

Toutefois, l'un des paramètres MASS::polr que je voudrais passer est method, ce qui est en conflit avec le paramètre caret::train()method.

Comment peut-on passer spécifiquement le paramètre polrmethod="probit" à polr en passant encore le paramètre method="polr"-caret::train()?

Vous ne savez pas s'il existe une astuce spécifique pour caret::train() ou une astuce générale pour les points de fonction par rapport aux paramètres de fonction nommés qui sont en conflit.

Plus précisément, j'ai besoin:

## Generic example, no data, but captures idea 
fit <- train(xdata, ydata, method="polr" # this 'method' is named parameter for train() function 
    , preProcess = c("center", "scale") 
    , method="probit" # this 'method' parameter needs to be passed via dots to 'polr' 
) 

Répondre

1

En général, la ... option transmet les paramètres nécessaires à la fonction sous-jacente. Mais dans certains cas, cela est en contradiction avec les paramètres existants dans la fonction de train. Dans le cas de polr cela est résolu via tuneGrid. Voir la page the available models et rechercher un polr.

Dans la notation de la formule, il devrait ressembler à ceci:

train(y ~ x1 + x2, 
     data = my_data, 
     method = "polr", 
     trControl = my_control, 
     tuneGrid = expand.grid(method = "probit")) 
+0

Merci, a très bien fonctionné. Je suis allé à la page des modèles disponibles et trouvé 'polr', mais il n'a pas mentionné comment passer ce paramètre. De plus, je ne pensais pas que c'était un paramètre de réglage, donc je n'ai pas essayé de passer par 'tuneGrid'. Je pense que je vais déposer un problème et demander un exemple à donner explicitement en passant ce paramètre. J'ai vérifié leurs tests de régression, et je n'ai pas vu un exemple de passage de ce paramètre ... https://github.com/topepo/caret/blob/master/RegressionTests/Code/polr.R – mpettis

+1

Soumis comme problème pour explicite documentation ici: https://github.com/topepo/caret/issues/554 – mpettis