2017-03-25 16 views
0

キャレットパッケージのカスタムトレーニングモデルに問題があります。私はSVM回帰を行う必要があり、私はSVMモデルのすべてのパラメータ、つまりコスト、シグマ、イプシロンを見つけたいと思っています。ビルトインバージョンはコストとシグマしかありません。私はすでにかなり役立つヒントherehereを見つけましたが、私のモデルはまだ動作しません。キャレットのカスタムSVMモデルのチューニングでエラーが発生しました

Error in models$grid(x = x, y = y, len = tuneLength, search = trControl$search) : 
unused argument (search = trControl$search) 

このエラーは私が得ているものであり、私のコードはここにあります。

SVMrbf <- list(type = "Regression", library = "kernlab", loop = NULL) 
prmrbf <- data.frame(parameters = data.frame(parameter = c('sigma', 'C', 'epsilon'), 
             class = c("numeric", "numeric", "numeric"), 
             label = c('Sigma', "Cost", "epsilon"))) 
SVMrbf$parameters <- prmrbf 
svmGridrbf <- function(x, y, len = NULL) { 
        library(kernlab) 
        sigmas <- sigest(as.matrix(x), na.action = na.omit, scaled = TRUE, frac = 1) 
        expand.grid(sigma = mean(sigmas[-2]), epsilon = 10^(-5:0), 
      C = 2 ^(-5:len)) # len = tuneLength in train 
} 
SVMrbf$grid <- svmGridrbf 
svmFitrbf <- function(x, y, wts, param, lev, last, weights, classProbs, ...) { 
        ksvm(x = as.matrix(x), y = y, 
         type = "eps-svr", 
         kernel = "rbfdot", 
         sigma = param$sigma, 
         C = param$C, epsilon = param$epsilon, 
         prob.model = classProbs, 
         ...) 
} 
SVMrbf$fit <- svmFitrbf 
svmPredrbf <- function(modelFit, newdata, preProc = NULL, submodels = NULL) 
    predict(modelFit, newdata) 
SVMrbf$predict <- svmPredrbf 
svmProb <- function(modelFit, newdata, preProc = NULL, submodels = NULL) 
    predict(modelFit, newdata, type="probabilities") 
SVMrbf$prob <- svmProb 
svmSortrbf <- function(x) x[order(x$C), ] 
SVMrbf$sort <- svmSortrbf 


svmRbfFit <- train(x = train.predictors1, y = train.response1, method =  SVMrbf, 
       tuneLength = 10) 
svmRbfFit 

同じエラーがあり、実際に間違っている人がいない人は見つかりませんでした。このコードは、私がオンラインで見つけたものと少しだけ変わったものです。

これは私の最初の投稿ですので、うまくいけば理解できます。追加情報を追加できます。あなたは慎重にカスタム関数のためcaret documentationを見れば

答えて

1

ソリューションは

svmGridrbf <- function(x, y, len = NULL, search = "grid") { 
        library(kernlab) 
        sigmas <- sigest(as.matrix(x), na.action = na.omit, scaled = TRUE, frac = 1) 
        expand.grid(sigma = mean(sigmas[-2]), epsilon = 10^(-5:0), C = 2 ^(-5:len)) # len = tuneLength in train 
} 

で、たとえば、あなたのグリッド関数に引数searchを含めることで、あなたはそのキャレットがどのように指定するように望んで表示されますグリッド検索をランダム検索(「グリッド要素」を参照)したい場合は、デフォルトパラメータを選択します。

エラーメッセージは、キャレットがその関数の引数として実際には定義されていない関数に引数を渡すことを示しています。

これはおそらく、ここを参照してくださいする方が簡単です:

sd(x = c(1,2,3), a = 2) 
# Error in sd(x = c(1, 2, 3), a = 2) : unused argument (a = 2)