Ошибка неиспользуемых аргументов при настройке параметров в костюмированной функции SVM - PullRequest
0 голосов
/ 08 мая 2020

Моя цель - настроить слегка измененную версию функции SVM, применяемую к различным функциям ядра, но я получаю ошибку в процессе.

Это функция, которая соответствует модели и вычисляет ошибки:

train.svm <-function(myKernel, myC){
  time0 <- Sys.time()

  switch(myKernel,
         linear={model <- svm(class ~ ., data = train, type="C-classification", cost=myC, kernel="linear", scale = FALSE)},
         poly.2={model <- svm(class ~ ., data = train, type="C-classification", cost=myC, kernel="polynomial", degree=2, coef0=1, scale = FALSE)},
         poly.3={model <- svm(class ~ ., data = train, type="C-classification", cost=myC, kernel="polynomial", degree=3, coef0=1, scale = FALSE)},
         RBF={model    <- svm(class ~ ., data = train, type="C-classification", cost=myC, kernel="radial", scale = FALSE)},
         stop("Enter one of 'linear', 'poly.2', 'poly.3', 'radial'"))

  pred_train <- predict(model, subset(train, select = -class), decision.values = TRUE)
  pred_test  <- predict(model, subset(test , select = -class), decision.values = TRUE)

  error_train <- sum(pred_train != train$class)/length(train$class)*100
  error_test <- sum(pred_test != test$class)/length(test$class)*100

  c(myC,error_train, error_test, Sys.time() -time0)
}

, и я пытаюсь настроить его с помощью следующей команды:

obj <- tune(train.svm, class ~ ., data = train, 
            ranges = list(myKernel = c("linear", "poly.2", "poly.3", "RBF"),cost = 2^(-4:4)),
            tunecontrol = tune.control(sampling = "fix")
        )

, но получаю следующую ошибку:

Error in (function (myKernel, myC)  : 
  unused arguments (data = list(c(43, 35, 43, 52, 57, ...

данные, которые я запускаю внутри этого SVM - это:

V3   V4   V5   V6  class
43 -146   33 -108   0
35  -63  -89  101   0
43 -149   33  -79   0
52 -122  -22 -113   1
57 -198 -112  -69   1

Я также понимаю, что Я не говорю функции tune, по какому значению следует определять критерии того, какие наборы значений являются лучшими .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...