I'd like to test the anova rbf kernel included in the kernlab package in caret. Following excelent tutorial (https://topepo.github.io/caret/custom_models.html) I've come up with the following code:

SVManova <- list(type = "Regression", library = "kernlab", loop = NULL)
prmanova <- data.frame(parameter = c("C", "sigma", "degree", "eps"),
                     class = rep("numeric", 4),
                     label = c("Cost", "Sigma", "Degree", "Eps"))
SVManova$parameters <- prmanova
    svmGridanova <- function(x, y, len = NULL) {
    sigmas <- sigest(as.matrix(x), na.action = na.omit, scaled = TRUE, frac = 1)
    expand.grid(sigma = mean(sigmas[-2]), epsilon = 0.000001,
                C = 2 ^(-5:len), degree = 1:2) # len = tuneLength in train
    SVManova$grid <- svmGridanova
svmFitanova <- function(x, y, wts, param, lev, last, weights, classProbs, ...) {
  ksvm(x = as.matrix(x), y = y,
       kernel = "anovadot",
       kpar = list(sigma = param$sigma, degree = param$degree),
       C = param$C, epsilon = param$epsilon,
       prob.model = classProbs,
       ...) #default type = "eps-svr"
SVManova$fit <- svmFitanova
    svmPredanova <- function(modelFit, newdata, preProc = NULL, submodels = NULL)
      predict(modelFit, newdata)
    SVManova$predict <- svmPredanova
svmProb <- function(modelFit, newdata, preProc = NULL, submodels = NULL)
  predict(modelFit, newdata, type="probabilities")
SVManova$prob <- svmProb
    svmSortanova <- function(x) x[order(x$C), ]
SVManova$sort <- svmSortanova

I then asked for the model to train some dataset:

set.seed(100) #use the same seed to train different models
svrFitanova <- train(R ~ .,
                data = trainSet,
                method = SVManova,
                preProc = c("center", "scale"),
                trControl = ctrl, tuneLength = 20,
                allowParallel = TRUE) #By default, RMSE and R2 are computed for regression (in all cases, selects the tunning and cross-val model with best value) , metric = "ROC"
#Print the results

But I get the following error:

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

I don't see why this error occurs.... tune grid has four columns as requested... Any ideas? Thanks


closed as off-topic by kjetil b halvorsen, Michael Chernick, mkt, Peter Flom Oct 8 at 9:55

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "This question appears to be off-topic because EITHER it is not about statistics, machine learning, data analysis, data mining, or data visualization, OR it focuses on programming, debugging, or performing routine operations within a statistical computing platform. If the latter, you could try the support links we maintain." – kjetil b halvorsen, Michael Chernick, mkt, Peter Flom
If this question can be reworded to fit the rules in the help center, please edit the question.


In svmGridanova, change the variable name from epsilon to eps.


  • $\begingroup$ Of course. I also changed eps and Eps to epsilon. Thanks! $\endgroup$ – jpcgandre Aug 30 '14 at 19:40

Not the answer you're looking for? Browse other questions tagged or ask your own question.