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,为了使问题简单,我们将其变为二分类问题:Setosa10 %and non-Setosa,groups中只有0和111 [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}{2\sigma^2 }}$$
‘Rbf_sigma’表示高斯核函数的参数,
’boxconstraint‘表示惩罚系数,类同于libsvm中svmtrain的参数c
C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。