2015-06-23 5 views
0

У меня есть проблемы с помощью функции применяются в R. Я сделал следующие функции:Проблемы с применить R

TrainSupportVectorMachines <- function(trainingData,kernel,G,C){ 

####train het model 
fit<-svm(Device~.,data=trainingData,kernel=kernel,probability=TRUE, 
     gamma =G, costs=C) 

return(fit); 
} 

Я хочу тренировать модель с различными значениями затрат (с). Поэтому я попробовал следующее: воздаем

cst = matrix(2^(-4:-2),ncol=3) 
    kernl = "sigmoid" 
    fitSVMBP <- apply(cst,2,function(x)TrainSupportVectorMachines(dtr1,kernl,0.625,x)) 

Мое мнение заключается в том, fitSVMBP становится список с различными моделями SVM с разными значениями стоимости. Но я получаю список с другой моделью SVM, но у них есть все затраты 1.

Кто-нибудь знает, что я делаю неправильно?


EDIT:

Я использую пакет e1071. И набор данных выглядит следующим образом:

> head(dtr1) 
    Device Geslacht Leeftijd Invultijd Type Maanden.geleden 
1  pc  M  45  16.0 A    15 
2  pc  V  43  27.5 A    3 
3  pc  V  28  16.0 A    15 
4  pc  V  17  10.0 A    13 
5  pc  M  56  16.0 A    15 
6  pc  M  50  27.5 A    3 

ответ

1

Вы назвали аргумент costs и не cost. Вот пример с использованием выборочных данных в ?svm, так что вы можете попробовать это:

model <- svm(Species ~ ., data = iris, cost=.6) 
model$cost 
# [1] 0.6 
model <- svm(Species ~ ., data = iris, costs=.6) 
model$cost 
# [1] 1 

R будет делать частичное согласования (поэтому в данном случае cos=.6 будет работать), но если вы overspecify аргумента не совпадает.

Не будет всегда жаловаться, если вы даете ему аргумент, который не ожидает:

> model <- svm(Species ~ ., data = iris, costs=.6, asjkdakjshd=1) 
> 

Поскольку непарные арг зацепиться в ... аргументу.

Если вы берете это слишком далеко, вы получите:

> model <- svm(Species ~ ., data = iris, c=.122) 
Error in svm.default(x, y, scale = scale, ..., na.action = na.action) : 
    argument 4 matches multiple formal arguments 

потому что c матчи cost, coef0, class.weights и cachesize.

+0

Спасибо, в этом была проблема. – karmabob

+0

Урок всегда проверяет ваши функции * перед тем, как «бросать их в« применять », потому что вы ошибочно считаете« применять »виновником ... – Spacedman

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