⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lib-svm使用说明.htm

📁 how to use lib_svm, searched from the internet source. After read this papers, you can use libsvm ea
💻 HTM
📖 第 1 页 / 共 2 页
字号:
        <P class=style1>的源代码,则也可以自己在 VC 等软件上编译生成可执行文件。 </P>
        <P class=style1>LIBSVM 使用的一般步骤是: </P>
        <P class=style1>1 ) 按照 LIBSVM 软件包所要求的格式准备数据集; </P>
        <P class=style1>2 ) 对数据进行简单的缩放操作; </P>
        <P class=style1>3 ) 考虑选用 RBF 核函数 2 K(x,y) e x y = -g - ; </P>
        <P class=style1>4 ) 采用交叉验证选择最佳参数 C 与 g ; </P>
        <P class=style1>5 ) 采用最佳参数 C 与 g 对整个训练集进行训练获取支持向量机模型; </P>
        <P class=style1>6 ) 利用获取的模型进行测试与预测。 </P>
        <P class=style1><STRONG>一 . LIBSVM 使用的数据格式 </STRONG></P>
        <P class=style1>LIBSVM 使用的训练数据和测试数据文件格式如下: </P>
        <P class=style1>: : &lt; value2&gt; … </P>
        <P class=style1>其中 是训练数据集的目标值,对于分类,它是标识某类的整数 ( 支持 </P>
        <P class=style1>多个类 ) ;对于回归,是任意实数。 </P>
        <P class=style1>是以 1 开始的整数,表示特征的序号; </P>
        <P class=style1>为实数,也就是我们常说的特征值或自变量。当特征值为 0 时,特征序号与特征值 value 都可以同时省略,即 
        index 可以是不连续的自然数。 </P>
        <P class=style1>与第一个特征序号、前一个特征值与后一个特征序号之间用空格隔开。测试数据文件中的 label 
        只用于计算准确度或误差,如果它是未知的,只需用任意一个数填写这一栏,也可以空着不填。例如: </P>
        <P class=style1>+1 1:0.708 2:1 3:1 4:-0.320 5:-0.105 6:-1 8:1.21 </P>
        <P class=style1><STRONG>二 . svmscale 的用法 </STRONG></P>
        <P class=style1>对数据集进行缩放的目的在于: </P>
        <P class=style1>1 )避免一些特征值范围过大而另一些特征值范围过小; </P>
        <P class=style1>2 )避免在训练时为了计算核函数而计算内积的时候引起数值计算的困难。因此,通常将数据缩放到 [ -1,1] 
        或者是 [0,1] 之间。 </P>
        <P class=style1>用法: svmscale [-l lower] [-u upper] [-y y_lower y_upper] 
        </P>
        <P class=style1>[-s save_filename] [-r restore_filename] filename </P>
        <P class=style1>(缺省值: lower = -1 , upper = 1 ,没有对 y 进行缩放) </P>
        <P class=style1>其中, </P>
        <P class=style1>-l :数据下限标记; lower :缩放后数据下限; </P>
        <P class=style1>-u :数据上限标记; upper :缩放后数据上限; </P>
        <P class=style1>-y :是否对目标值同时进行缩放; y_lower 为下限值, y_upper 为上限值; </P>
        <P class=style1>-s save_filename :表示将缩放的规则保存为文件 save_filename ; </P>
        <P class=style1>-r restore_filename :表示将缩放规则文件 restore_filename 载入后按此缩放; 
        </P>
        <P class=style1>filename :待缩放的数据文件(要求满足前面所述的格式)。 </P>
        <P class=style1>缩放规则文件可以用文本浏览器打开,看到其格式为: </P>
        <P class=style1>lower upper </P>
        <P class=style1>lval1 uval1 </P>
        <P class=style1>lval2 uval2 </P>
        <P class=style1>其中的 lower 与 upper 与使用时所设置的 lower 与 upper 含义相同; index 表 
        </P>
        <P class=style1>示特征序号; lval 为该特征对应转换后下限 lower 的特征值; uval 为对应于转换后上限 upper 
        的特征值。 </P>
        <P class=style1>数据集的缩放结果在此情况下通过 DOS 窗口输出,当然也可以通过 DOS 的 </P>
        <P class=style1>文件重定向符号“ &gt; ”将结果另存为指定的文件。 </P>
        <P class=style1>使用实例: </P>
        <P class=style1>1) svmscale – s train3.range train3&gt;train3.scale </P>
        <P class=style1>表示采用缺省值(即对属性值缩放到 [ -1,1] 的范围,对目标值不进行缩放) </P>
        <P class=style1>对数据集 train3 进行缩放操作,其结果缩放规则文件保存为 train3.range 
        ,缩放集的缩放结果保存为 train3.scale 。 </P>
        <P class=style1>2 ) svmscale – r train3.range test3&gt;test3.scale </P>
        <P class=style1>表示载入缩放规则 train3.range 后按照其上下限对应的特征值和上下限值线 </P>
        <P class=style1>性的地对数据集 test3 进行缩放,结果保存为 test3.scale 。 </P>
        <P class=style1><STRONG>三 . svmtrain 的用法 </STRONG></P>
        <P class=style1>svmtrain 实现对训练数据集的训练,获得 SVM 模型。 </P>
        <P class=style1>用法: svmtrain [options] training_set_file [model_file] 
        </P>
        <P class=style1>其中, </P>
        <P class=style1>options (操作参数):可用的选项即表示的涵义如下所示 </P>
        <P class=style1>-s svm 类型:设置 SVM 类型,默认值为 0 ,可选类型有: </P>
        <P class=style1>0 -- C- SVC </P>
        <P class=style1>1 -- n - SVC </P>
        <P class=style1>2 -- one-class-SVM </P>
        <P class=style1>3 -- e - SVR </P>
        <P class=style1>4 -- n - SVR </P>
        <P class=style1>-t 核函数类型:设置核函数类型,默认值为 2 ,可选类型有: </P>
        <P class=style1>0 -- 线性核: u'*v </P>
        <P class=style1>1 -- 多项式核: (g*u'*v+ coef 0)deg ree </P>
        <P class=style1>2 -- RBF 核: e( u v 2) g - </P>
        <P class=style1>3 -- sigmoid 核: tanh(g*u'*v+ coef 0) </P>
        <P class=style1>-d degree :核函数中的 degree 设置,默认值为 3 ; </P>
        <P class=style1>-g g :设置核函数中的 g ,默认值为 1/ k ; </P>
        <P class=style1>-r coef 0 :设置核函数中的 coef 0 ,默认值为 0 ; </P>
        <P class=style1>-c cost :设置 C- SVC 、 e - SVR 、 n - SVR 中从惩罚系数 C ,默认值为 1 
        ; </P>
        <P class=style1>-n n :设置 n - SVC 、 one-class-SVM 与 n - SVR 中参数 n ,默认值 
        0.5 ; </P>
        <P class=style1>-p e :设置 n - SVR 的损失函数中的 e ,默认值为 0.1 ; </P>
        <P class=style1>-m cachesize :设置 cache 内存大小,以 MB 为单位,默认值为 40 ; </P>
        <P class=style1>-e e :设置终止准则中的可容忍偏差,默认值为 0.001 ; </P>
        <P class=style1>-h shrinking :是否使用启发式,可选值为 0 或 1 ,默认值为 1 ; </P>
        <P class=style1>-b 概率估计:是否计算 SVC 或 SVR 的概率估计,可选值 0 或 1 ,默认 0 ; </P>
        <P class=style1>-wi weight :对各类样本的惩罚系数 C 加权,默认值为 1 ; </P>
        <P class=style1>-v n : n 折交叉验证模式。 </P>
        <P class=style1>其中 -g 选项中的 k 是指输入数据中的属性数。操作参数 -v 随机地将数据剖分为 n 
        部分并计算交叉检验准确度和均方根误差。以上这些参数设置可以按照 SVM 的类型和核函数所支持的参数进行任意组合,如果设置的参数在函数或 SVM 
        类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。 training_set_file 
        是要进行训练的数据集; model_file 是训练结束后产生的模型文件,该参数如果不设置将采用默认的文件名,也可以设置成自己惯用的文件名。 
        </P>
        <P class=style1>使用实例: </P>
        <P class=style1>1 ) svmtrain train3.scale train3.model </P>
        <P class=style1>训练 train3.scale ,将模型保存于文件 train3.model ,并在 dos 窗口中输出如下 
        </P>
        <P class=style1>结果: </P>
        <P class=style1>optimization finished, #iter = 1756 </P>
        <P class=style1>nu = 0.464223 </P>
        <P class=style1>obj = -551.002342, rho = -0.337784 </P>
        <P class=style1>nSV = 604, nBSV = 557 </P>
        <P class=style1>Total nSV = 604 </P>
        <P class=style1>其中, #iter 为迭代次数, nu 与前面的操作参数 -n n 相同, obj 为 SVM 文件 </P>
        <P class=style1>转换为的二次规划求解得到的最小值, rho 为判决函数的常数项 b , nSV 为支持 </P>
        <P class=style1>向量个数, nBSV 为边界上的支持向量个数, Total nSV 为支持向量总个数。 </P>
        <P class=style1>训练后的模型保存为文件 train3.model ,用记事本等文本浏览器打开可以看到其内容如下(其后“ % 
        ”后内容为笔者所加注释): </P>
        <P class=style1>svm_type c_svc % 训练所采用的 svm 类型,此处为 C- SVC </P>
        <P class=style1>kernel_type rbf % 训练采用的核函数类型,此处为 RBF 核 </P>
        <P class=style1>gamma 0.047619 % 与操作参数设置中的 g 含义相同 </P>
        <P class=style1>nr_class 2 % 分类时的类别数,此处为两分类问题 </P>
        <P class=style1>total_sv 604 % 总共的支持向量个数 </P>
        <P class=style1>rho -0.337784 % 决策函数中的常数项 b </P>
        <P class=style1>label 0 1 % 类别标签 </P>
        <P class=style1>nr_sv 314 290 % 各类别标签对应的支持向量个数 </P>
        <P class=style1>SV % 以下为支持向量 </P>
        <P class=style1>1 1:-0.963808 2:0.906788 ... 19:-0.197706 20:-0.928853 
        21:-1 </P>
        <P class=style1>1 1:-0.885128 2:0.768219 ... 19:-0.452573 20:-0.980591 
        21:-1 </P>
        <P class=style1>... ... ... </P>
        <P class=style1>1 1:-0.847359 2:0.485921 ... 19:-0.541457 20:-0.989077 
        21:-1 </P>
        <P class=style1>% 对于分类问题,上面的支持向量的各列含义与训练数据集相同;对于回归问题,略有不同,与训练数据中的标签 
        label (即 y 值)所对应的位置在模型文件的支持向量中现在存放的是 Lagrange 系数 a 值,即为下面决策函数公式中的 a 值: 
        </P>
        <P class=style1>* * </P>
        <P class=style1>1 </P>
        <P class=style1>() ( )( ( ) ( )) ( ) ( , ) </P>
        <P class=style1>( , ) </P>
        <P class=style1>k </P>
        <P class=style1>i i i i i i </P>
        <P class=style1>i i sv </P>
        <P class=style1>i i </P>
        <P class=style1>i sv </P>
        <P class=style1>fx a a x x b a a k x x b </P>
        <P class=style1>ak x x b </P>
        <P class=style1>= </P>
        <P class=style1>= - F F + = - + </P>
        <P class=style1>= + </P>
        <P class=style1>g </P>
        <P class=style1><STRONG>四 . svmpredict 的用法 </STRONG></P>
        <P class=style1>svmpredict 是根据训练获得的模型,对数据集合进行预测。 </P>
        <P class=style1>用法: svmpredict [options] test_file model_file 
        output_file </P>
        <P class=style1>options (操作参数): </P>
        <P class=style1>-b probability_estimates :是否需要进行概率估计预测,可选值为 0 或者 1 , 
</P>
        <P class=style1>默认值为 0 。 </P>
        <P class=style1>model_file 是由 svmtrain 产生的模型文件; test_file 是要进行预测的数据文 
</P>
        <P class=style1>件; output_file 是 svmpredict 的输出文件,表示预测的结果值。 svmpredict 
        没有 </P>
        <P class=style1>其它的选项。</P></BLOCKQUOTE></TD></TR>
  <TR vAlign=center borderColor=#ffcc66 bgColor=#ffcc66>
    <TD colSpan=2 height=25><SPAN class="style10 style61"><SPAN 
      class=style65><SPAN class=style61><STRONG>  Navigation 导航   </STRONG><A 
      href="http://luzhenbo.88uu.com.cn/index.htm">本站首页</A>   <A 
      href="http://luzhenbo.88uu.com.cn/matlab.htm">MATLAB资料</A>   <A 
      href="http://luzhenbo.88uu.com.cn/vc.htm">Visual C++</A>   <A 
      href="http://luzhenbo.88uu.com.cn/internet.htm">网络资源</A>   <A 
      href="http://luzhenbo.88uu.com.cn/friends.htm">友情链接</A>   <A 
      href="http://www.superbuckler.com/blog/user1/luzhenbo/index.html" 
      target=_blank>给我留言</A> 
</SPAN></SPAN></SPAN></TD></TR></TBODY></TABLE></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -