美文网首页
机器学习之如何利用libSVM编写matlab程序求解兵王问题

机器学习之如何利用libSVM编写matlab程序求解兵王问题

作者: jiarf | 来源:发表于2021-07-02 08:21 被阅读0次
    这里需要大家对MATLAB编程有一定的了解,首先下载libSVM工具包 image.png
    打开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

    相关文章

      网友评论

          本文标题:机器学习之如何利用libSVM编写matlab程序求解兵王问题

          本文链接:https://www.haomeiwen.com/subject/kjpnsltx.html