• LibSVM-windows



    本系列文章由 @YhL_Leo 出品,转载请注明出处。
    文章链接: http://blog.csdn.net/yhl_leo/article/details/50112477


    官方Web: https://www.csie.ntu.edu.tw/~cjlin/libsvm/
    GitHub: https://github.com/cjlin1/libsvm
    Tutorial: http://ntu.csie.org/~piaip/svm/svm_tutorial.html

    1 库组成

    Dos下运行程序有编译好的exe文件可以直接运行。例如本人的libSVM(版本为3.20)解压在E:ClassTasklibsvm-3.20目录下:


    其中heart_scale文件是一个libSVM库提供的训练示例样本,打开后可以发现里面是一堆这样的数据:

    很容易看出,数据集结构是:

    label vec{(index_1,value_1), ...(index_13, value_13)}

    即两类观测值+1-1,后面的13维向量是每个样本某一特征的特征值。

    进入windows子文件夹下有:

    其中包含四个exe文件:

    • svm-predict:依照已经训练好的model ,输入新的数据,并输出预测新数据的类别。
    • svm-scale:有时候特征值的波动范围比较大需要对特征数据进行缩放,范围可以自己定,一般是[0,1]或[-1,1]。
    • svm-toy:图形界面,可以自己画点,产生数据,并显示/保存分类结果。
    • svm-train:会接受特定格式的训练输入文件,产生一个model 文件。

    2 svm-train

    首先来看svm-train,在Dos下切换到windows目录下(Win+R->cmd->切换盘符,cd切换文件夹),后输入命令:

    > E:ClassTasklibsvm-3.20windows> svm-train ..//heart_scale ..//train.model

    这里并没把heart_train文件拷入到windows下,而是在其前一层父目录中。如果已经拷到windows目录下,就无需..//

    回车后很快就会出现:

    其中:

    • #iter为迭代次数
    • nu是选择的核函数类型的参数
    • obj为SVM文件转换为的二次规划求解得到的最小值
    • rho为判决函数的偏置项b
    • nSV为标准支持向量个数(0<ai<c)
    • nBSV为边界上的支持向量个数(ai=c)
    • Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型Total nSV = nSV,但是对于n类,Total nSV =ni=1nSV

    打开train_model文件可以看到:

    其中:

    • svm_type c_svc:所选择的svm类型,默认为c_svc
    • kernel_type rbf:训练采用的核函数类型,此处为RBF
    • gamma 0.0769231RBF核的参数γ
    • nr_class 2:类别数,此处为两分类问题
    • total_sv 132:支持向量总个数
    • rho 0.424462:判决函数的偏置项b
    • label 1 -1:原始文件中的类别标识
    • nr_sv 64 68:每个类的支持向量机的个数
    • SV:以下为各个类的权系数及相应的支持向量

    3 svm-predict

    再看svm-predict,利用刚刚训练完成的模型就可以进行分类:

    > E:ClassTasklibsvm-3.20windows> svm-predict ..//heart_scale ..//train.model ..//train.out

    回车后,就会得到一个生成文件train.out,同时Dos中也会输出分类精度:

    即分类精度为86.6667%,而train.out文件打开后,每行只有-11表示样本的类别。

    4 svm-scale

    数据缩放的主要目的有两个:

    • 防止某个特征过大或过小,从而在训练中起的作用不平衡;
    • 为了计算速度。因为在核计算中,会用到内积运算或exp运算,不平衡的数据可能造成计算困难。

    用法为:

    > svm-scale -l lower -u upper -y y_lower y_upper -s save_filename -r restore_filename filename

    其中:

    • -l:设定数据的下限值lower,缺省为-1
    • -u:设定数据的上限值upper,缺省为+1
    • -y:是否对目标值同时进行缩放,y_lower为下限值,y_upper为上限值
    • -s:表示将缩放的规则保存为文件save_filename
    • -r:表示将按照已经存在的规则文件restore_filename进行缩放
    • filename:待缩放的数据文件,文件格式按照libSVM格式

    例如键入下面的指令:

    E:ClassTasklibsvm-3.20windows>svm-scale -s ..//scaled.out ..//heart_scale > ..//save.data

    就会生成两个文件scaled.outsave.data,可以自行查看其中的内容。

    5 svm-toy

    svm-toy是一个用户测试小工具,运行后如下:

    随机用鼠标点一些点,然后点击change增加新的类别,例如随机画三类点:

    点击run,可以得到分类结果:

  • 相关阅读:
    ssl
    [原创] Docker 安装 Lnmp 环境
    Oracle 的DBNEWID (NID)实用程序
    使用 convert database 命令进行 RMAN 跨平台迁移 (同版本)
    hbase2强制删除表
    zookeeper删除目录节点报错:Authentication is not valid : /hbase/tokenauth
    hbase1向hbase2表迁移
    /etc/sysconf/networkscripts/ifcfgeth0的手册到底在哪里
    Mycat新增数据报错can't fetch sequnce in db,sequnce
    从GitHub远程仓库中删除文件夹或文件
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6332211.html
Copyright © 2020-2023  润新知