Java使用LibSVM(2)

2019-04-19  本文已影响0人  7ason

参数说明

1、svm_train()

用法: svmtrain [options] training_set_file [model_file]

举个栗子

其中,options为操作参数,可用的选项即表示的涵义如下所示:

-s设置svm类型:

0 – C-SVC

1 – v-SVC

2 – one-class-SVM

3 –ε-SVR

4 – n - SVR

-t设置核函数类型,默认值为2

0 --线性核:u'*v

1 --多项式核:(g*u'*v+coef0)degree

2 -- RBF核:exp(-γ*||u-v||2)

3 -- sigmoid核:tanh(γ*u'*v+coef0)

-d degree:设置多项式核中degree的值,默认为3

-gγ:设置核函数中γ的值,默认为1/k,k为特征(或者说是属性)数;

-r coef 0:设置核函数中的coef 0,默认值为0;

-c cost:设置C-SVC、ε-SVR、n - SVR中从惩罚系数C,默认值为1;

-n v:设置v-SVC、one-class-SVM与n - SVR中参数n,默认值0.5;

-pε:设置v-SVR的损失函数中的e,默认值为0.1;

-m cachesize:设置cache内存大小,以MB为单位,默认值为40;

-eε:设置终止准则中的可容忍偏差,默认值为0.001;

-h shrinking:是否使用启发式,可选值为0或1,默认值为1;

-b概率估计:是否计算SVC或SVR的概率估计,可选值0或1,默认0;

-wi weight:对各类样本的惩罚系数C加权,默认值为1;

-v n:n折交叉验证模式;

model_file:可选项,为要保存的结果文件,称为模型文件,以便在预测时使用。

默认情况下,只需要给函数提供一个样本文件名就可以了,但为了能保存结果,还是要提供一个结果文件名,比如:test.model,则命令为:

svmtrain test.txt test.model

2、svm_train()运行控制台输出

运行svm_train()后,结果如下图

默认情况

#iter为迭代次数

nu是你选择的核函数类型的参数

obj为SVM文件转换为的二次规划求解得到的最小值(也有说对偶SVM问题的最佳目标值)

rho为判决函数的偏置项b

nSV为标准支持向量个数(0<a[i]<c)

nBSV为边界上的支持向量个数(a[i]=c)

Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型Total nSV = nSV,但是对于多类,这个是各个分类模型的nSV之和)

* 什么是标准支持向量个数呢,就是这些特征中泛化能力最强的部分,鲁棒性最强。换句话说就是代表能力最强的。因此,它的占比不能太高,一般不高于80%,如高于这个值,则需调整特征的提取。

3、train-model文件

svm_type c_svc //所选择的svm类型,默认为c_svc

kernel_type rbf  //训练采用的核函数类型,此处为RBF核

gamma 0.0769231  //RBF核的参数γ

nr_class 2        //类别数,此处为两分类问题

total_sv 132      //支持向量总个数

rho 0.424462      //判决函数的偏置项b

label 1 -1        //原始文件中的类别标识

nr_sv 64 68      //每个类的支持向量机的个数

SV                //以下为各个类的权系数及相应的支持向量

1 1:0.166667 2:1 3:-0.333333 … 10:-0.903226 11:-1 12:-1 13:1

0.5104832128985164 1:0.125 2:1 3:0.333333 … 10:-0.806452 12:-0.333333 13:0.5

………..

-1 1:-0.375 2:1 3:-0.333333…. 10:-1 11:-1 12:-1 13:1

-1 1:0.166667 2:1 3:1 …. 10:-0.870968 12:-1 13:0.5

上一篇下一篇

猜你喜欢

热点阅读