打开MATLAB image.png
1.将libSVM路径加载到matlab中,这也matlab就能找到libsvm'这个工具包中所有与matlab相互接口的函数, image.png
image.png
image.png
保存关闭即可,
image.png
2.点击主要程序
image.png
这一讲的重点是分析testSVMchessLibSvm.M这个程序,
首先数据的预处理部分
image.png
image.png
xapp来接受6维的矩阵,用yapp来接受对应的标签,
image.png
image.png
image.png
读入数据后可见xapp是一个6个维度的向量,总共有28056个
image.png
以上图片是查看xapp中所有维度的第一个值,
image.png
因为在xapp中任意一个值要不是1要不是-1都被存在了yapp中
image.png
第一个向量它的标签是1,
下一步是所有的训练样本28056个分为了训练集(5000个)和测试集(23056个样本)
首先我们需要把所有样本都打乱,这样可以保证我们挑选的训练集和测试机是完全随机的,用的是RANDPERM函数,获得随机的整数排列,
image.png image.png
基于这两个获得了测试机和训练集,
image.png
image.png
计划使用RTB核函数,接下来确定
image.png
基于人工的经验,在LIBSVM网站上有说明, image.png 接下来将一个重要的函数 image.png
接下来我们遍历所有的c和gama,那么最适合的标准是什么呢
image.png
但是训练集5000个样本分出一些样本去估计识别率,请注意 image.png
这样会导致过拟合,从而测出来的识别率比平时的要高,跟我们考试考的是平时训练过的题一样,成绩会很高, image.png
为了充分利用样本,我们常采用交叉验证来测试识别率,例如5000个等分五份训练样本 image.png 接下来是 image.png image.png
image.png
这样就可以 image.png
但是也增加了训练数据的时间,因为在上面我们需要训练五个模型, image.png image.png
image.png
image.png
就是说进行交叉验证,五折,找出c和gama的初步组合 image.png 找出更精确的c和gama的组合, image.png
image.png
最大识别率,运用交叉验证 image.png
训练出来的支持向量机的模型 image.png
class=2有两类,220最终有220支持向量,
image.png
下面是220个对应的α,只有在支持向量上阿尔法不为0 其他的都为0,,最后一行是代表数值,第四行代表B, image.png
image.png
所有的支持向量是什么样子, image.png
最后用得到的model image.png 对23056个测试样本进行测试,获得的识别率, image.png
输出YPRED是对每个样本预测的标签,第二个是在测试机上整体的识别率,第三个是每个测试样本欧米噶转置X+B,最后获得的识别率是99.61%。 作业: image.png image.png
网友评论