matlab自带工具箱svmtrain函数参数的选择

1、在使用svmtrain函数时,需要使用核函数进行分类,百度大部分的都是关于libsvm下的核函数使用,看到了一篇写matlab的svmtrain参数选择,如下

https://blog.csdn.net/shenziheng1/article/details/54178685/

还可以使用 help svmtrain查看svmtrain函数的参数示例和使用示例,如需要阅读体验更好,请使用doc svmtrain 查看

例子:

 1 e.g.
 2 clc;clear all
 3 load fisheriris %载入matlab自带的数据[有关数据的信息可以自己到UCI查找,这是UCI的经典数据之一],
 4 % UCI数据库http://archive.ics.uci.edu/ml/该数据库得到大家认可
 5 %其中meas是150*4的矩阵代表着有150个样本每个样本有4个属性描述
 6 %species代表着这150个样本的分类 
 7 data = [meas(:,1), meas(:,2)]; %在这里只取meas的第一列和第二列,即只选取前两个属性.
 8 groups = ismember(species,'setosa');
 9 %由于species分类中是有三个分类:setosa,versicolor,virginica,为了使问题简单,我们将其变为二分类问题:Setosa
10 %and non-Setosa,groups中只有0和1
11 [train, test] = crossvalind('holdOut',groups);%生成索引,一部分用来训练,其他部分用来测试
12 cp = classperf(groups);%随机选择训练集合测试集,其中cp作用是后来用来评价分类器的.*/
13 svmStruct = svmtrain(data(train,:),groups(train),'showplot',true);
14 %svmStruct= svmtrain(data(train,:),groups(train),'Kernel_Function','rbf','RBF_Sigma',1,'boxconstraint',1,'showplot',true);
15 %使用svmtrain进行训练,得到训练后的结构svmStruct,在预测时使用.

 上述 ‘Kernel_Function’表示核函数,包括'linear'  (线性)默认、 'quadratic' (二次)、 'polynomial' (多项式默认三阶)、'rbf'(高斯径向基函数)

线性核函数用于数据线性可分的情况下,后面三个一般应用于数据线性不可分的情况(将而二维数据映射到更高的维度从而使数据可区分)

吴恩达老师 机器学习讲义  https://pan.baidu.com/s/1boGzeDx

      机器学习视频  http://open.163.com/special/opencourse/machinelearning.html

高斯核函数为

$$f(X_{i})=e^{-frac{||x_{i}-l_{i}||^2}{2sigma^2 }}$$

‘Rbf_sigma’表示高斯核函数的参数,

’boxconstraint‘表示惩罚系数,类同于libsvm中svmtrain的参数c

C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。

原文地址:https://www.cnblogs.com/zx-zhang/p/9972173.html