Ich habe das kernlab
-Paket verwendet und hatte Probleme mit der Funktion ksvm
/predict
mit vorberechneten Kernen.Fehler bei der Verwendung des Kernlab-Pakets mit vorberechneten Kernen
Die Fehlermeldung bekam ich habe, ist:
> ksvm.mod <- ksvm(trainingset.outer, traininglabels.outer, kernel = "matrix",type="C-svc", C = 60, prob.model = TRUE)
> temp <- predict(ksvm.mod, test.kernel.outer)
Error in .local(object, ...) : test vector does not match model !
ich für den Ort des Fehlers auf den Quellcode ausgesehen haben und festgestellt, dass es Unterschiede in den Spalten
newnrows <- nrow(newdata)
newncols <- ncol(newdata)
if(!is(newdata,"kernelMatrix") && !is.null(xmatrix(object))){
if(is(xmatrix(object),"list") && is(xmatrix(object)[[1]],"matrix")) oldco <- ncol(xmatrix(object)[[1]])
if(is(xmatrix(object),"matrix")) oldco <- ncol(xmatrix(object))
if (oldco != newncols) stop ("test vector does not match model !")
}
jedoch fällig ist, die Objekte I gleiche Spalten verwendet haben
> ncol(trainingset.outer)
[1] 1498
> ncol(test.kernel.outer)
[1] 1498
Dann habe, habe ich an der Zusammenarbeit sah lumns nach den Modellen gespeichert und fand die folgenden:
> ncol(xmatrix(ksvm.mod)[[1]])
Error in xmatrix(ksvm.mod)[[1]] : subscript out of bounds
> xmatrix(ksvm.mod)[[1]]
Error in xmatrix(ksvm.mod)[[1]] : subscript out of bounds
> xmatrix(ksvm.mod)
<0 x 0 matrix>
> ?xmatrix
> ksvm.mod
Support Vector Machine object of class "ksvm"
SV type: C-svc (classification)
parameter : cost C = 60
[1] " Kernel matrix used as input."
Number of Support Vectors : 831
Objective Function Value : -211534.1
Training error : 0.257677
Probability model included.
> ncol(xmatrix(gene)[[1]]) # for dataframes used without precomputed kernels
[1] 172
Ich denke, das Modell nicht jedes Objekt gespeichert haben, bin ich in Verständnis korrekt? Da es im Web keine guten Beispiele für die Verwendung des Pakets mit vorberechneten Kernen gibt, schreibe ich für Ihre Hilfe.
PS: Ich werde versuchen, die Daten für Tests zur Verfügung zu stellen, falls erforderlich.