2013-03-01 2 views
1

Использование e1071, можно настроить параметры модели SVMИспользование tryCatch в R

svmmodels <- lapply(trainingtemp, function(data) 
        { 
         svm.tune <- tune.svm(label~., data=data, 
              gamma=10^(-3:0), cost=10^(-3:3)); 
         svm(label~., data=data, 
          method="C-classification", 
          kernel="radial", cost=svm.tune$best.parameters$cost, 
           gamma=svm.tune$best.parameters$gamma) 
        }) 

Но с некоторыми данными, пустая модель возвращается tune.svm (может быть несколько причин для этого). Как можно задействовать tryCatch в этой ситуации, если tune.svm возвращает следующее сообщение об ошибке, то можно использовать параметры по умолчанию в svm-функции.

Error in predict.svm(ret, xhold, decision.values = TRUE) : 
Model is empty! 
Calls: lapply ... svm.formula -> svm.default -> na.action -> predict -> predict.svm 
Execution halted 

ответ

2

Это должно работать:

tryCatch(
    svm.tune <- tune.svm(label~., data=data, 
          gamma=10^(-3:0), cost=10^(-3:3)) 
    svm(label~., data=data, 
         method="C-classification", 
         kernel="radial", cost=svm.tune$best.parameters$cost, 
          gamma=svm.tune$best.parameters$gamma) 
}, error = function(err) { 
    ## here you can your svm with defualt parameter 
    svm(label~., data=data, 
         method="C-classification", 
         kernel="radial") 
}) 
+0

Спасибо. Но где разместить svm-вызов для параметров параметров по умолчанию и гаммы? – Shahzad

+0

@Shahzad Я обновляю свой ответ. Я сделал плохую копию/вставку. – agstudy

+0

@ Shahzad помогает, сообщите мне, если нет. – agstudy

Смежные вопросы