### Function Reference: `svmtrain`

statistics: model = svmtrain (labels, data, libsvm_options)

This function trains an SVM model based on known labels and their corresponding data which comprise an instance matrtix.

- labels : An m by 1 vector of prediction labels. (type must be double)
- data : An m by n matrix of m testing instances with n features. It can be dense or sparse. (type must be double)
- `libsvm_options` : A string of testing options in the same format as that of LIBSVM.

`libsvm_options` :

- `-s` : svm_type; set type of SVM (default 0)

| 0 | C-SVC (multi-class classification)
| 1 | nu-SVC (multi-class classification)
| 2 | one-class SVM
| 3 | epsilon-SVR (regression)
| 4 | nu-SVR (regression)

- `-t` : kernel_type; set type of kernel function (default 2)

| 0 | linear: u’*v
| 1 | polynomial: (gamma× u’× v + coef0) ^ degree
| 2 | radial basis function: e×p(-gamma× |u-v| ^ 2)
| 3 | sigmoid: tanh(gamma× u’× v + coef0)
| 4 | precomputed kernel (kernel values in training_instance_matrix)

- `-d` : degree; set degree in kernel function (default 3)
- `-g` : gamma; set gamma in kernel function (default 1/num_features)
- `-r` : coef0; set coef0 in kernel function (default 0)
- `-c` : cost; set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)
- `-n` : nu; set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)
- `-p` : epsilon; set the epsilon in loss function of epsilon-SVR (default 0.1)
- `-m` : cachesize; set cache memory size in MB (default 100)
- `-e` : epsilon; set tolerance of termination criterion (default 0.001)
- `-h` : shrinking; whether to use the shrinking heuristics, 0 or 1 (default 1)
- `-b` : probability_estimates; whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)
- `-w` : weight; set the parameter C of class i to weight*C, for C-SVC (default 1)
- `-v` : n; n-fold cross validation mode
- `-q` : quiet mode (no outputs)

The function `svmtrain` function returns a model structure which can be used for future prediction and it contains the following fields:

- `Parameters` : parameters
- `nr_class` : number of classes; = 2 for regression/one-class svm
- `totalSV` : total #SV
- `rho` : -b of the decision function(s) w×+b
- `Label` : label of each class; empty for regression/one-class SVM
- `sv_indices` : values in [1,...,num_traning_data] to indicate SVs in the training set
- `ProbA` : pairwise probability information; empty if -b 0 or in one-class SVM
- `ProbB` : pairwise probability information; empty if -b 0 or in one-class SVM
- `nSV` : number of SVs for each class; empty for regression/one-class SVM
- `sv_coef` : coefficients for SVs in decision functions
- `SVs` : support vectors

If you do not use the option `-b 1`, ProbA and ProbB are empty matrices. If the ’-v’ option is specified, cross validation is conducted and the returned model is just a scalar: cross-validation accuracy for classification and mean-squared error for regression.

Source Code: svmtrain