私たちはそれをサポートする予定はありません。あなたはこれを非常に簡単にサポートするカスタム学習者を定義することができます。 classif.ksvm
には2つの変更があります(テストされていません)。その後
makeDiscreteLearnerParam(id = "kernel", default = "rbfdot",
values = c("vanilladot", "polydot", "rbfdot", "tanhdot", "laplacedot", "besseldot", "anovadot", "splinedot", "matrix"))
、アカウントに新しいカーネルを取るために列車の機能を変更します:
まず、カーネルパラメータの新しいパラメータ値が許可
trainLearner.classif.ksvm = function(.learner, .task, .subset, .weights = NULL, degree, offset, scale, sigma, order, length, lambda, normalized, ...) {
kpar = learnerArgsToControl(list, degree, offset, scale, sigma, order, length, lambda, normalized)
f = getTaskFormula(.task)
pm = .learner$predict.type == "prob"
parlist = list(...)
if (base::length(kpar) > 0L)
kernlab::ksvm(f, data = getTaskData(.task, .subset), kpar = kpar, prob.model = pm, ...)
else if (parlist$kernel == "matrix")
kernlab::ksvm(kernlab::as.kernelMatrix(getTaskData(.task, .subset)), data = getTaskData(.task, .subset), prob.model = pm, ...)
else
kernlab::ksvm(f, data = getTaskData(.task, .subset), prob.model = pm, ...)
}
これは、データと仮定していますあなたはこのタスクを渡しています。カスタムカーネルを定義しています。これはちょっとしたクルージングです...
同様のケースでは、mlrに 'configureMlr(on.par.out.of.bounds =" quiet ")'があります。しかしこの場合、引数 'kernel =" matrix "は、@Lars Kotthoffのように学習者を変えなければならないような振舞いを変えます。 –