An Example of Using the R interface


Including the SVM package

The SVM package is in a package called "e1071." Firt you need to set the path to include the directory where the e1071 package is. For example, if e1071 is in the subdirectory R-packages of your home directory:
> export R_LIB=~/R-packages
Then you have to install and include it
> install.packages("e1071")
> library("e1071")

The usage

You can use
> ?svm
to see the help information of the interface.

A simple example: the XOR problem

Assign four points to a four by two matrix called x
> x <- array(data = c(0,0,1,1,0,1,0,1),dim=c(4,2))
Assign labels of four data
> y <- factor(c(1,-1,-1,1))
Training the problem using support vector classification
> model <- svm(x,y,type="C-classification")
Test the original data again using the output model
> predict(model,x)

Three useful examples

In the following there are three more complicated examples which are from the document of this interface:
> example("svm")

svm> data(iris)

svm> attach(iris)

svm> model <- svm(Species ~ ., data = iris)
*
optimization finished, #iter = 96
nu = 0.046487
obj = -2.403411, rho = 0.041035
nSV = 11, nBSV = 2
*
optimization finished, #iter = 36
nu = 0.038898
obj = -1.945146, rho = 0.167765
nSV = 10, nBSV = 0
*
optimization finished, #iter = 63
nu = 0.293571
obj = -21.377493, rho = 0.143712
nSV = 33, nBSV = 26
Total nSV = 45

svm> x <- subset(iris, select = -Species)

svm> y <- Species

svm> model <- svm(x, y)
*
optimization finished, #iter = 96
nu = 0.046487
obj = -2.403411, rho = 0.041035
nSV = 11, nBSV = 2
*
optimization finished, #iter = 36
nu = 0.038898
obj = -1.945146, rho = 0.167765
nSV = 10, nBSV = 0
*
optimization finished, #iter = 63
nu = 0.293571
obj = -21.377493, rho = 0.143712
nSV = 33, nBSV = 26
Total nSV = 45

svm> print(model)

Call:
 svm.default(x = x, y = y) 

Parameters:
   SVM-Type:  C-classification 
 SVM-Kernel:  radial 
       cost:  1 
     degree:  3 
      gamma:  0.25 
     coef.0:  0 
         nu:  0.5 
    epsilon:  0.5 
       cost:  1 


Number of Support Vectors:  45  ( 7 19 19 )


Number of Classes:  3 

Levels:
 setosa versicolor virginica 

Rho:
 0.04103499 0.1677649 0.1437119 


svm> summary(model)

Call:
 svm.default(x = x, y = y) 

Parameters:
   SVM-Type:  C-classification 
 SVM-Kernel:  radial 
       cost:  1 
     degree:  3 
      gamma:  0.25 
     coef.0:  0 
         nu:  0.5 
    epsilon:  0.5 
       cost:  1 


Number of Support Vectors:  45  ( 7 19 19 )


Number of Classes:  3 

Levels:
 setosa versicolor virginica 

Rho:
 0.04103499 0.1677649 0.1437119 

Support Vectors:
    Sepal.Length Sepal.Width Petal.Length Petal.Width
14           4.3         3.0          1.1         0.1
16           5.7         4.4          1.5         0.4
19           5.7         3.8          1.7         0.3
24           5.1         3.3          1.7         0.5
25           4.8         3.4          1.9         0.2
42           4.5         2.3          1.3         0.3
45           5.1         3.8          1.9         0.4
51           7.0         3.2          4.7         1.4
53           6.9         3.1          4.9         1.5
55           6.5         2.8          4.6         1.5
57           6.3         3.3          4.7         1.6
58           4.9         2.4          3.3         1.0
61           5.0         2.0          3.5         1.0
64           6.1         2.9          4.7         1.4
67           5.6         3.0          4.5         1.5
69           6.2         2.2          4.5         1.5
71           5.9         3.2          4.8         1.8
73           6.3         2.5          4.9         1.5
77           6.8         2.8          4.8         1.4
78           6.7         3.0          5.0         1.7
79           6.0         2.9          4.5         1.5
84           6.0         2.7          5.1         1.6
85           5.4         3.0          4.5         1.5
86           6.0         3.4          4.5         1.6
87           6.7         3.1          4.7         1.5
99           5.1         2.5          3.0         1.1
101          6.3         3.3          6.0         2.5
102          5.8         2.7          5.1         1.9
107          4.9         2.5          4.5         1.7
111          6.5         3.2          5.1         2.0
119          7.7         2.6          6.9         2.3
120          6.0         2.2          5.0         1.5
122          5.6         2.8          4.9         2.0
124          6.3         2.7          4.9         1.8
127          6.2         2.8          4.8         1.8
128          6.1         3.0          4.9         1.8
130          7.2         3.0          5.8         1.6
132          7.9         3.8          6.4         2.0
134          6.3         2.8          5.1         1.5
135          6.1         2.6          5.6         1.4
139          6.0         3.0          4.8         1.8
142          6.9         3.1          5.1         2.3
147          6.3         2.5          5.0         1.9
148          6.5         3.0          5.2         2.0
150          5.9         3.0          5.1         1.8


Coefficiants:
              [,1]        [,2]
 [1,]  0.000000000  0.01017126
 [2,]  0.434080723  0.95574579
 [3,]  0.063057430  0.00000000
 [4,]  0.005863633  0.00000000
 [5,]  0.341475825  0.01149015
 [6,]  1.000000000  0.96747404
 [7,]  0.479896333  0.00000000
 [8,] -0.567881290  0.00000000
 [9,]  0.000000000  1.00000000
[10,]  0.000000000  1.00000000
[11,]  0.000000000  1.00000000
[12,] -0.541206839  0.00000000
[13,]  0.000000000  0.40490500
[14,]  0.000000000  1.00000000
[15,]  0.000000000  1.00000000
[16,]  0.000000000  1.00000000
[17,]  0.000000000  1.00000000
[18,]  0.000000000  1.00000000
[19,]  0.000000000  1.00000000
[20,] -0.141083347  1.00000000
[21,]  0.000000000  1.00000000
[22,] -0.074202468  1.00000000
[23,]  0.000000000  1.00000000
[24,]  0.000000000  0.27363722
[25,]  0.000000000  1.00000000
[26,] -1.000000000  0.00000000
[27,] -0.118961508  0.00000000
[28,]  0.000000000 -0.31890447
[29,] -0.731975036 -1.00000000
[30,]  0.000000000 -1.00000000
[31,] -0.427405462  0.00000000
[32,] -0.101852870 -1.00000000
[33,]  0.000000000 -1.00000000
[34,]  0.000000000 -1.00000000
[35,]  0.000000000 -1.00000000
[36,]  0.000000000 -1.00000000
[37,]  0.000000000 -0.82788343
[38,] -0.405831306 -0.13176137
[39,]  0.000000000 -1.00000000
[40,]  0.000000000 -0.62555212
[41,]  0.000000000 -1.00000000
[42,] -0.158855069 -0.77444084
[43,]  0.000000000 -1.00000000
[44,]  0.000000000 -1.00000000
[45,]  0.000000000 -1.00000000



svm> pred <- predict(model, x)

svm> table(pred, y)
            y
pred         setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         48         0
  virginica       0          2        50

svm> x <- seq(0.1, 5, by = 0.05)

svm> y <- log(x) + rnorm(x, sd = 0.2)

svm> m <- svm(x, y)
*
optimization finished, #iter = 12
nu = 0.040404
obj = -2.511836, rho = -0.359518
nSV = 6, nBSV = 2

svm> new <- predict(m, x)

svm> plot(x, y)

svm> points(x, log(x), col = 2)

svm> points(x, new, col = 4)

svm> X <- data.frame(a = rnorm(1000), b = rnorm(1000))

svm> attach(X)

svm> m <- svm(X)
*
optimization finished, #iter = 266
obj = 26836.184233, rho = 128.900207
nSV = 503, nBSV = 498

svm> m <- svm(~a + b)
*
optimization finished, #iter = 266
obj = 26836.184233, rho = 128.900207
nSV = 503, nBSV = 498

svm> m <- svm(~., data = X)
*
optimization finished, #iter = 266
obj = 26836.184233, rho = 128.900207
nSV = 503, nBSV = 498

svm> predict(m, t(c(0, 0)))
[1] FALSE

svm> predict(m, t(c(4, 4)))
[1] FALSE

svm> plot(X)

svm> points(X[m$index, ], col = 2)
>