[R] Save model and predictions from svm

Steve Lianoglou mailinglist.honeypot at gmail.com
Tue Aug 4 05:15:37 CEST 2009


On Aug 3, 2009, at 10:55 PM, Noah Silverman wrote:

> Hello,
> I'm using the e1071 package for training an SVM.  It seems to be  
> working
> well.
> This question has two parts:
> 1) Once I've trained an SVM model, I want to USE it within R at a  
> later
> date to predict various new data.  I see the write.svm command, but
> don't know how to LOAD the model back in so that I can use it  
> tomorrow.
> How can I do this?

You can circumvent the e1071-specific write functions and just use R's  
builtin save() method. Eg,

R> save(mymodel, file='mymodel.rda')

You can load it later like so:

R> load('mymodel.rda')

> 2) I would like to add the prediction values(confidence) as a column  
> in
> my original data.frame.  (Again, to be used for more analysis at a  
> later
> date.)  I am using "predictions <- prediction(model,traindata)" and  
> that
> gives me a huge object with all the predictions.  Is there a single
> command that would just add the predictions, or do I need to do some
> clever data manipulation?

What do you mean "a huge object"? By default you should just be  
getting a vector of length Nx1 where N is the number of examples to  
predict over, and the value is the class it belongs to -- which seems  
like what you're after.

If you call predict.svm with decision.values=TRUE, you'll get an N x  
NUMBER_OF_CLASSES matrix. In that case, what do you mean by "a command  
that just add[s] the predictions"? If you want to add all decision  
values to your original data, you can use cbind. If you want to return  
the max value for each data point, play with the apply function and  
its MARGIN parameter along with the max/which.max functions -- but if  
you're just adding the max value, you're losing the decision label.

Anyway -- the predict.svm function just returns a vector/matrix. You  
can use the standard R vector/matrix manipulation methods to do what  
you want. If you're still having trouble with that, please post an  
example of what you're after -- and simply use the code/data from the ? 
predict.svm example section so we can play along.


Steve Lianoglou
Graduate Student: Computational Systems Biology
   |  Memorial Sloan-Kettering Cancer Center
   |  Weill Medical College of Cornell University
Contact Info: http://cbio.mskcc.org/~lianos/contact

More information about the R-help mailing list