1

キャレット パッケージのカスタム トレーニング モデルに問題があります。SVM 回帰を実行する必要があり、SVM モデルのすべてのパラメーター (コスト、シグマ、イプシロン) を見つけたいと考えています。組み込みバージョンにはコストとシグマしかありません。ここここで非常に役立つヒントを既に見つけましたが、私のモデルはまだ機能しません。

models$grid(x = x, y = y, len = tuneLength, search = trControl$search) のエラー: 未使用の引数 (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

同じエラーが発生し、実際に何が問題なのか見当もつかない人を見つけることができませんでした。このコードは、ほとんど私がオンラインで見つけたもので、わずかに変更されています。

ところで、これは私の最初の投稿なので、理解できることを願っています。理解できない場合は、追加情報を追加できます。

4

1 に答える 1