[R] Help with SVM package Kernlab

David Winsemius dwinsemius at comcast.net
Fri Dec 25 06:15:02 CET 2009


On Dec 24, 2009, at 11:42 PM, Vishal Thapar wrote:

> Hi useR's,
>
> I am resending this request since I got no response for my last post  
> and I
> am new to the list so pardon me if I am violating the protocol.
>
> I am trying to use the "Kernlab" package for training and prediction  
> using
> SVM's. I am getting the following error when I am trying to use the  
> predict
> function:

I'm guessing that the package is really "kernlab".

>
>> predictSvm = predict(modelforSVM, testSeq);
> Error in `contrasts<-`(`*tmp*`, value = "contr.treatment") :    
> contrasts can
> be applied only to factors with 2 or more levels

Sounds like R does not like the structure of your testSeq argument.  
Perhaps it was expecting a factor argument with levels that matched  
those used in the training set?

>
> The training file is a data frame with 501 columns: Col 1 is "Class"  
> which
> is "+" or "-" and Cols V1 to V500 are "A/C/G/T" . There are 200  
> seq's for
> training (100 + and - each). this is very similar to the  
> "promotergene" data
> set included as example with the package.

>
> The model that I have generated is as follows:
>
> modelforSVM <- ksvm(Class ~ ., data = train500, kernel = "rbfdot",  
> kpar =
> "automatic", C = 60, cross = 3, prob.model = TRUE)
>
> The testSeq is a vector of 500 characters casted as a data.frame. I  
> tried
> adding the Class column as well later to the testSeq data frame but  
> got the
> same error.
>

Why not offer the results of dput() on that object. Or you could offer  
the output of str(testSeq) , even if you aren't going to create a  
smaller test object that could be used for testing.

> I am using R with windows, 32 bit, version 2.9.0
>
> Any help that I can get is really appreciated.
>
> Thanks,
>
> Vishal


David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list