您好,欢迎访问三七文档
当前位置:首页 > 法律文献 > 理论/案例 > LIBSVM附带用例一个测试--新手初体验
网上已经有很多关于林教授的LIBSVM使用说明了,这里我只是演示附带的一个heart-scale用例来给那些新手们一个更加直观的初体验:svm-train与svm-predict的使用:首先,我们要把LIBSVM这个文件夹拷到一个简单路径下,如:D:\libsvm,这样是为了方便输入运行,接下来在电脑“开始”-附件-“运行”中输入cmd,进入DOS环境如下图:下面我们就要运行svm-train了:svmtrain的语法大致就是:svmtrain[options]training_set_file[model_file]其中,options为操作参数,可用的选项即表示的涵义如下所示:-s设置svm类型:0–C-SVC1–v-SVC2–one-class-SVM3–ε-SVR4–n-SVR-t设置核函数类型,默认值为20--线性核:u'*v1--多项式核:(g*u'*v+coef0)degree2--RBF核:exp(-γ*||u-v||2)3--sigmoid核:tanh(γ*u'*v+coef0)-ddegree:设置多项式核中degree的值,默认为3-gγ:设置核函数中γ的值,默认为1/k,k为特征(或者说是属性)数;-rcoef0:设置核函数中的coef0,默认值为0;-ccost:设置C-SVC、ε-SVR、n-SVR中从惩罚系数C,默认值为1;-nv:设置v-SVC、one-class-SVM与n-SVR中参数n,默认值0.5;-pε:设置v-SVR的损失函数中的e,默认值为0.1;-mcachesize:设置cache内存大小,以MB为单位,默认值为40;-eε:设置终止准则中的可容忍偏差,默认值为0.001;-hshrinking:是否使用启发式,可选值为0或1,默认值为1;-b概率估计:是否计算SVC或SVR的概率估计,可选值0或1,默认0;-wiweight:对各类样本的惩罚系数C加权,默认值为1;-vn:n折交叉验证模式;model_file:可选项,为要保存的结果文件,称为模型文件,以便在预测时使用。默认情况下,只需要给函数提供一个样本文件名就可以了,但为了能保存结果,还是要提供一个结果文件名,比如:train.txt,则命令为:svmtrainobject.txttrain.txt现在,我们输入svm-trainheart_scaletrain.txt,(heart_scale是附带用例)得下图:其中,#iter为迭代次数,nu是你选择的核函数类型的参数,obj为SVM文件转换为的二次规划求解得到的最小值,rho为判决函数的偏置项b,nSV为标准支持向量个数(0a[i]c),nBSV为边界上的支持向量个数(a[i]=c),TotalnSV为支持向量总个数(对于两类来说,因为只有一个分类模型TotalnSV=nSV,但是对于多类,这个是各个分类模型的nSV之和)。在目录下,还可以看到产生了一个train.txt文件,可以用记事本打开,记录了训练后的结果。现在,我们在来测试一下svm-predict命令,svmpredict是根据训练获得的模型,对数据集合进行预测。为了能够预测,我们这里就将heart-scale文件中的数据直接拷到自命名为test.txt的文件中,用来预测:用法:svmpredict[options]test_filemodel_fileoutput_file其中,options为操作参数,可用的选项即表示的涵义如下所示:-bprobability_estimates——是否需要进行概率估计预测,可选值为0或者1,默认值为0。model_file——是由svmtrain产生的模型文件;test_file——是要进行预测的数据文件,格式也要符合libsvm格式,即使不知道label的值,也要任意填一个,svmpredict会在output_file中给出正确的label结果,如果知道label的值,就会输出正确率;output_file——是svmpredict的输出文件,表示预测的结果值。输入svm-predictheart-test.txttrain.txtout.txt,得下图:在目录下现在可以看到一个out.txt文件,它里面记录了结果。熟悉SVM原理的读者都知道,SVM通过引入松弛变量来优化原来的问题,从而实现了软间隔分类器,使得分类器具有一定的容错能力(有的时候那些不可分的很可能是噪声),下面我们来看看如何调节我们的惩罚因子C,这里通过演示C的使用,读者可以根据自己的情况尝试着调试其他的参数(上面有关于这些参数的说明)来优化自己的训练结果:令C=100时:输入svm-train–c100heart-scaletrain-c=100.txt,得到下图:输入:svm-predictheart-test.txttrain-c=100.txtout.txt,得下图:我们发现识别的正确率Accuracy提高了!(关于惩罚因子的作用请查阅有关资料)。最后,我有测试了令C=1000时的情况,结果如下图所示:呵呵,正确率为100%了!再来简要的说一下svm-toy的使用吧,这个也只是让自己或者别人在视觉上有一个大致的体验:1.运行svm-toy,在窗口内点几点,这几点是同一种颜色的,表示的是同一类;2.点击“change”再在窗口的另一块区域点几点,这时点的颜色变了说明现在画的另一类(最多支持划分3类)3.点击“Run”,便会看到分类的结果。4.你还可以改变-t,-c的值(这些值在上面都有说明),来看看结果有什么样的改变。5.下面是一个实例:
本文标题:LIBSVM附带用例一个测试--新手初体验
链接地址:https://www.777doc.com/doc-3740410 .html