Help using predict() for kernlab's SVM in R?
I am trying to use the `kernlab` R package to do Support Vector Machines (SVM). For my very simple example, I have two pieces of training data. A and B.

(A and B are of type `matrix` - they are adjacency matrices for graphs.)

So I wrote a function which takes A+B and generates a kernel matrix.

    > km
             [,1]     [,2]
    [1,] 14.33333 18.47368
    [2,] 18.47368 38.96053

Now I use `kernlab`'s `ksvm` function to generate my predictive model. Right now, I'm just trying to get the darn thing to work - I'm not worried about training error, etc.

So, **Question 1**: Am I generating my model correctly? Reasonably?

    # y are my classes. In this case, A is in class "1" and B is in class "-1"
    > y
    [1]  1 -1

    > model2 =  ksvm(km, y, type="C-svc", kernel = "matrix");
    > model2
    Support Vector Machine object of class "ksvm" 
    
    SV type: C-svc  (classification) 
     parameter : cost C = 1 
    
    [1] " Kernel matrix used as input."
    
    Number of Support Vectors : 2 
    
    Objective Function Value : -0.1224 
    Training error : 0 

So far so good. We created our custom kernel matrix, and then we created a ksvm model using that matrix. We have our training data labeled as "1" and "-1".

Now to predict:

    > A
         [,1] [,2] [,3]
    [1,]    0    1    1
    [2,]    1    0    1
    [3,]    0    0    0
    
    > predict(model2, A)
    Error in as.matrix(Z) : object 'Z' not found

Uh-oh. This is okay. Kind of expected, really. "Predict" wants some sort of vector, not a matrix.

So lets try some things:

    > predict(model2, c(1))
    Error in as.matrix(Z) : object 'Z' not found
    > predict(model2, c(1,1))
    Error in as.matrix(Z) : object 'Z' not found
    > predict(model2, c(1,1,1))
    Error in as.matrix(Z) : object 'Z' not found
    > predict(model2, c(1,1,1,1))
    Error in as.matrix(Z) : object 'Z' not found
    > predict(model2, km)
    Error in as.matrix(Z) : object 'Z' not found

Some of the above tests are nonsensical, but that is my point: no matter what I do, I just can't get predict() to look at my data and do a prediction. Scalars don't work, vectors don't work. A 2x2 matrix doesn't work, nor does a 3x3 matrix.

**What am I doing wrong here?**

(Once I figure out what ksvm *wants*, then I can make sure that my test data can conform to that format in a sane/reasonable/mathematically sound way.)
Help using predict() for kernlab's SVM in R?
===

I am trying to use the `kernlab` R package to do Support Vector Machines (SVM). For my very simple example, I have two pieces of training data. A and B.

(A and B are of type `matrix` - they are adjacency matrices for graphs.)

So I wrote a function which takes A+B and generates a kernel matrix.

    > km
             [,1]     [,2]
    [1,] 14.33333 18.47368
    [2,] 18.47368 38.96053

Now I use `kernlab`'s `ksvm` function to generate my predictive model. Right now, I'm just trying to get the darn thing to work - I'm not worried about training error, etc.

So, **Question 1**: Am I generating my model correctly? Reasonably?

    # y are my classes. In this case, A is in class "1" and B is in class "-1"
    > y
    [1]  1 -1

    > model2 =  ksvm(km, y, type="C-svc", kernel = "matrix");
    > model2
    Support Vector Machine object of class "ksvm" 
    
    SV type: C-svc  (classification) 
     parameter : cost C = 1 
    
    [1] " Kernel matrix used as input."
    
    Number of Support Vectors : 2 
    
    Objective Function Value : -0.1224 
    Training error : 0 

So far so good. We created our custom kernel matrix, and then we created a ksvm model using that matrix. We have our training data labeled as "1" and "-1".

Now to predict:

    > A
         [,1] [,2] [,3]
    [1,]    0    1    1
    [2,]    1    0    1
    [3,]    0    0    0
    
    > predict(model2, A)
    Error in as.matrix(Z) : object 'Z' not found

Uh-oh. This is okay. Kind of expected, really. "Predict" wants some sort of vector, not a matrix.

So lets try some things:

    > predict(model2, c(1))
    Error in as.matrix(Z) : object 'Z' not found
    > predict(model2, c(1,1))
    Error in as.matrix(Z) : object 'Z' not found
    > predict(model2, c(1,1,1))
    Error in as.matrix(Z) : object 'Z' not found
    > predict(model2, c(1,1,1,1))
    Error in as.matrix(Z) : object 'Z' not found
    > predict(model2, km)
    Error in as.matrix(Z) : object 'Z' not found

Some of the above tests are nonsensical, but that is my point: no matter what I do, I just can't get predict() to look at my data and do a prediction. Scalars don't work, vectors don't work. A 2x2 matrix doesn't work, nor does a 3x3 matrix.

**What am I doing wrong here?**

(Once I figure out what ksvm *wants*, then I can make sure that my test data can conform to that format in a sane/reasonable/mathematically sound way.)